雄辩-由于列类型转换,通过关系删除行失败。如何强制转换类型?

时间:2018-12-11 14:22:39

标签: php laravel eloquent

我的表格如下:

交货

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

库存变动

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

关系

具有交货:id的交货有很多库存移动,链接到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查询使用的传递ID是整数,但是由于stock_movements entity_id的类型转换,我认为这失败了,因为我需要将其作为字符串。

变通

现在,我可以通过循环调用delete来使其工作。

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

有什么主意为什么在循环中运行却能在一次调用所有记录上的delete时失败?

0 个答案:

没有答案