Lithium PHP framework - How to run db transaction on mysql?

682 views Asked by At

I have been working on an e-commerce website in PHP Lithium framework, actually this one is upgraded from CakePHP, we have to use transaction operation on db in mysql. Just don't know how to do db transaction in PHP Lithium framework.

2

There are 2 answers

2
codegy On BEST ANSWER

Since Lithium uses PDO, you can just get the PDO object and call the beginTransaction() method.

$foo = app\models\Foo::create();
$pdo = Connections::get('default')->connection; 
$pdo->beginTransaction();
$foo->bar = 'Hello';
$foo->save();
$pdo->commit();

https://github.com/UnionOfRAD/lithium/issues/1004#issuecomment-23690165 http://www.php.net/manual/en/pdo.begintransaction.php

1
Housni On

It doesn't seem like it is supported, unfortunately. See source of lithium/data/source/database/adapter/MySql.php.

An alternative may be to manually execute your queries.

Within your model, you can do:

static::connection->read($sql, $placeholders);

Where $sql is your raw SQL like:

$sql = 'SELECT * FROM users WHERE id = {:id}';

and $placeholders (optional) are your placeholders:

$placeholders = [
    'id' => 5
];

Using that knowledge, you should be able to set up a transaction.