Мне нужно использовать транзакции на MongoDB в Laravel.
Я скачал драйвер php MongoDB 1.6, скопировал и вставил php_mongodb.dll в папку php / ext.
Я также установилБиблиотека php mongo через
composer require mongodb/mongodb
Теперь, когда я пытаюсь использовать транзакции в соответствии с this , она не откатывается при возникновении ошибки.
$client = new Client($url);
$callback = function (\MongoDB\Driver\Session $session) use ($client) {
$data = [
"name" => "Tommy",
];
$collection = $client->db1->users;
$user = $collection->updateOne(
['mobile' => '*'],
['$set' => $data],
[$session]
);
$data = [
"activate" => 1,
];
$collection = $client->db1->wallets;
$wallet1 = $collection->updateOne(
['_id' => 100],
['set' => $data],
[$session]
);
};
$session = $client->startSession();
$transactionOptions = [
'readConcern' => new \MongoDB\Driver\ReadConcern(\MongoDB\Driver\ReadConcern::LOCAL),
'writeConcern' => new \MongoDB\Driver\WriteConcern(\MongoDB\Driver\WriteConcern::MAJORITY, 1000),
'readPreference' => new \MongoDB\Driver\ReadPreference(\MongoDB\Driver\ReadPreference::RP_PRIMARY),
];
try{
\MongoDB\with_transaction($session, $callback, $transactionOptions);
return true;
}catch (\Exception $e)
{
return false;
}
Класс сеанса в MongoDB\Driver\Session
неизвестен в laravel, в то время как этот класс предназначен для mongodb> = 1.4.0. Я не знаю, что не так. Кто-нибудь может мне помочь?