Eloquent - удаление строк через связь завершается неудачно из-за типа приведения столбцаКак заставить типы броска? - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть следующие таблицы:

поставки

- id (auto increment ID)
- supplier_name (string)
- delivery_date (datetime)
- ...

stock_movements

- id (auto increment ID)
- entity_type (string)
- entity_id (string) //This can hold a UUID or ID.
- qty (int)
- ...

Отношения

Поставка hasMany движения запасов с поставками: идентификатор связан с stock_movements: entity_id

Проблема

Вызов:

$delivery->stockMovements()->delete();

Ошибки:

SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect DOUBLE value: '808498e7-a393-42f1-ab23-6ee89eb7040a' (SQL: delete from `stock_movements` where `stock_movements`.`entity_id` = 10000005 and `stock_movements`.`entity_id` is not null)

Необработанный запрос SQL использует идентификатор доставки как в целочисленном, но я думаю, что это не удается, так как мне нужно, чтобы это была строка, из-затип приведения stock_movements entity_id.

Обход

Сейчас я могу заставить это работать, вызывая удаление в цикле.

$delivery->stockMovements()->each(function (StockMovement $sm){
     $sm->delete();
});

Есть какие-нибудь идеи, почему делать это в цикле нормально, в то время как вызов delete для всех записей не удался?

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