Laravel Mongodb транзакции - PullRequest
       1

Laravel Mongodb транзакции

0 голосов
/ 05 ноября 2019

Мне нужно использовать транзакции на 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. Я не знаю, что не так. Кто-нибудь может мне помочь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...