Php Laravel mongodb交易
我需要在Laravel的MongoDB上使用事务 我下载了php MongoDB驱动程序1.6,并将php_MongoDB.dll复制粘贴到php/ext文件夹中 我还通过安装了php mongo库Php Laravel mongodb交易,php,laravel,mongodb,Php,Laravel,Mongodb,我需要在Laravel的MongoDB上使用事务 我下载了php MongoDB驱动程序1.6,并将php_MongoDB.dll复制粘贴到php/ext文件夹中 我还通过安装了php mongo库 composer require mongodb/mongodb 现在,当我尝试根据使用事务时,它不会在发生错误时回滚 $client = new Client($url); $callback = function (\MongoDB\Driver\Session $session
composer require mongodb/mongodb
现在,当我尝试根据使用事务时,它不会在发生错误时回滚
$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。我不知道怎么了。有人能帮我吗?寻求调试帮助的问题(“为什么此代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:@Saly3301 100%同意,对于本质上相同的选择,此消息的意图比当前更改的“关闭原因”要清楚得多。这个问题基本上是说“我的代码不起作用…”,但问题中没有任何代码可以让任何人看到它为什么不起作用。过去的MCVE响应中的变化信息并不能清楚地传达这一点。这个问题基本上需要呈现被认为是有责任的代码,而这实际上重现了这个问题。如果没有这一点,在这里很难提供帮助。这些信息中有很多已经改变,旧版本更好,我很高兴我给仍在编辑问题的作者留了一份副本(但没有要求他们做的细节)。外部链接不是再现问题的可接受的发布代码点。我们这里需要一个最小的列表。您还需要生成一个最小的列表,希望这个小代码示例(作为整个应用程序的一部分)能够在不需要其他帮助的情况下向您自己强调问题。如果你没有发现它,那么其他人就会发现。只有一个小样本。@Neil Lunn我刚刚编辑了这个问题,请重新考虑。