Laravel DatabaseTransaction не работает с БД Фасад - PullRequest
2 голосов
/ 28 марта 2019

У меня проблема при запуске тестов с использованием DatabaseTransactions.В моей таблице продуктов у меня есть все продукты, где stock_count = -99.

Вот мой код

TestCase.php (все тесты расширяют этот класс)

use DatabaseTransactions;

protected $connectionsToTransact = ["mysql"];

public function setUp()
{
   parent::setUp();
   MimProduct::query()->update(['stock_count'=>100]);
   ...
}

Затем в одном из моих тестов я выполнил тот же запрос, один с использованием DB Facade, а другой - с использованием фактической модели.

 dd(DB::table("mim.products")->first(),MimProduct::all()->first());

, и на выходе получилось

enter image description here

Мои выводы на данный момент таковы:

  • Использование фасада БД не работает с признаком транзакции БД;он не может использовать транзакции «в памяти», и поэтому он будет работать с «живой» БД.
  • В то время как модель имеет доступ к памяти.

Я прав илиесть способ преодолеть эту проблему?

...