Laravel SQL не работает должным образом. Нет синтаксической ошибки - PullRequest
0 голосов
/ 09 января 2020

Могут ли разработчики Laravel помочь мне понять, почему следующий оператор SQL не работает. Я не получаю никаких ошибок, он просто не делает то, что должен:

 DB::table('devices')
->leftJoin('hotel_device','hotel_device.device_id','devices.id')
->where("hotel_device.device_id","IS","NULL")
->delete();

Это должно удалить все идентификаторы устройств, где ссылка leftJoin возвращается как NULL (ie. Где этот идентификатор устройства не используется в таблице "hotel_device").

Если я запускаю его как raw SQL непосредственно в базе данных, он работает правильно. Обратите внимание на условие «IS», а не на «=», так как я ссылаюсь на значение NULL. (с помощью «=» не найдено ни одной подходящей строки)

спасибо.

1 Ответ

1 голос
/ 09 января 2020

Вы должны использовать метод whereNull для сравнения с нулем, а не пытаться фильтровать его, используя обычный метод where.

DB::table('devices')
->leftJoin('hotel_device','hotel_device.device_id','devices.id')
->whereNull("hotel_device.device_id")
->delete();
...