【问题标题】:Eloquent Model "UPDATE" Query FailingEloquent 模型“更新”查询失败
【发布时间】: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 获取货物,它会返回一个空白/空/未定义的变量。
  • 这很奇怪!相关列的数据类型是什么?

标签: php laravel eloquent


【解决方案1】:

我认为下面的代码可以帮助你。

$os = OrderShipment::where('order_id', $shipment->orderReferenceNumber)->update([ "api_shipment_id" => $data->shipmentId ]);

【讨论】:

    【解决方案2】:

    试试这个解决方案:

    单次更新:

    $os = OrderShipment::where('order_id', $shipment->orderReferenceNumber)
    $os->api_shipment_id = $data->shipmentId;
    $os->update();
    

    对于大规模更新:

    OrderShipment::where('order_id', $shipment->orderReferenceNumber)
        ->update(["api_shipment_id" => $data->shipmentId]);
    

    更多关于update的信息

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-05
      • 1970-01-01
      • 1970-01-01
      • 2014-04-21
      • 1970-01-01
      相关资源
      最近更新 更多