Laravel DatabaseTransactions не работают с DB Facade

У меня проблема, когда я запускаю тесты с помощью 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());

и выход

Laravel DatabaseTransactions не работают с DB Facade

Мои выводы пока такие:

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

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

Какое соединение используется по умолчанию для ваших тестов?

Jonas Staudenmeir 28.03.2019 23:23

Соединение по умолчанию — mysql.

Alessandro.Vegna 01.04.2019 10:37

В вашей модели используется соединение mim, которого нет в $connectionsToTransact. DB::table("mim.products") использует соединение mysql по умолчанию.

Jonas Staudenmeir 01.04.2019 10:58

Я также пытался поместить оба соединения в $connectionsToTransact, но это не сработало, в конце концов я избавился от соединения «mim» и использовал только «mysql», и все сработало, это не правильное решение, но лучше, чем ничего . Спасибо]

Alessandro.Vegna 01.04.2019 16:05
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
4
4
794
0

Другие вопросы по теме