【发布时间】:2017-09-06 02:17:23
【问题描述】:
我似乎遇到了一个相当模糊的问题,我的 Eloquent 模型的“更新”查询不再起作用。
这是查询生成器:
$os = OrderShipment::where('order_id', '=', $shipment->orderReferenceNumber)->update(array("api_shipment_id" => $data->shipmentId));
这个查询在一个 IF 中,所以只有当 $shipment->orderReferenceNumber 有一个值时才会执行——它确实有。此更新查询始终返回 false/0 更新行。
在我拥有的 OrderShipment 模型内部:
protected $fillable = [
'api_shipment_id',
'order_id',
'shipping_method_id'
];
所以该值是可更新的并且在“可填充”数组中。我还确保我可以使用带有“order-id”的select语句并通过它找到数据——但那里也没有骰子。但是,如果我从 MySQL 控制台中执行查询,则该查询工作得很好,所以我现在有点卡在这里。
【问题讨论】:
-
如果没有修改,则返回 false/0,因为没有行被修改。
-
我觉得奇怪的是,如果我不插入变量而只传递静态变量,例如手动输入 '1979' 代替 '$shipment- >orderReferenceNumber'--但我知道 $shipment->orderReferenceNumber 是定义和设置的,所以这简直让我很难过。
-
它是否已定义并设置为
and different than what was already there?关键是它必须与已经设置的不同,否则即使查询本身是有效且成功的,MySQL 也不会报告任何行更改。 -
是的,它不一样,当前值为 NULL,我尝试将其更改为随机值以查看 NULL 是否是问题;事实并非如此。如果我使用“GET”语句尝试使用变量通过 order_id 获取货物,它会返回一个空白/空/未定义的变量。
-
这很奇怪!相关列的数据类型是什么?