Laravel 在使用 where 条件和更新时提供不同的结果

Posted

技术标签:

【中文标题】Laravel 在使用 where 条件和更新时提供不同的结果【英文标题】:Laravel provide different result when using where condition with update 【发布时间】:2020-03-14 19:10:38 【问题描述】:

条件一:

$update=Model::orWhere(..)->orWhere(..)->update([$updateField => "1"]);
if($update==1)

这会返回一个整数值,因为 0 和 1 可以正常工作

条件2:

 $update=Model::where(..)->orWhere(..)->orWhere(..)->update([$updateField => "1"]);
 if($update==1)

报错

类 Illuminate\Database\Eloquent\Collection 的对象不能 转换为int

也试过了

 Model:where(function($q) use(..) 
            return $q
                     ->where(..)
                     ->orWhere(..);
          )->where(..)->update([$updateField => "1"]);

更新时还返回一个相当整数的对象,面对奇怪的响应

来自更新函数。

这是代码的最终状态

$updated=0;
$updated=ShipmentOrderPalletInfos::where('shipment_id',$request->shipment_id)->where("pallet_scan_code", $scan_id)->update([$updateField => "1"]);
if($updated!=1)
    $updated=ShipmentOrderPalletInfos::where('shipment_id',$request->shipment_id)->where("carton_scan_code", $scan_id)->update([$updateField => "1"]);

if( $updated==1)

任何帮助都会很棒

【问题讨论】:

您可以添加 where() 中的内容吗?为什么你在函数内部return $q @N69S 只是列和值,如果我会添加一些重要的东西 @N69S 问题增加了一个额外的where 返回对象不是整数 您是否调试了$update 变量。真的是收藏吗?因为它对我来说一切正常,并且您有语法错误Model:,请将其修复为Model:: @phpdroid 您的问题不在您提供的代码中。你遗漏了一些重要的东西(除了语法错误)。请按原样提供您的代码。 【参考方案1】:

请更改您的代码

它是整数值

你给它一个字符串的形式,这就是为什么给你错误

update([$updateField => 1]);

$update=Model:where(..)->Where(..)->Where(..)->update([$updateField => 1]);
 if($update==1)

【讨论】:

条件 1 工作得很好,请通过它 从变量中得到错误我分配了这个值让我更新问题 @VikasKatariya 与错误无关,您可以将字符串 "1" 作为数据库中 int 字段的值。 我也有类似(a==1 || b==2) and c==3而不是a==1 and b==2 and c==3的查询 如果这个答案对你有帮助,请放弃这个答案谢谢!!@phpdroid

以上是关于Laravel 在使用 where 条件和更新时提供不同的结果的主要内容,如果未能解决你的问题,请参考以下文章

laravel orm where 条件中 mysql函数 怎么用

laravel 选择 where 和 where 条件

laravel orm where 条件中 mysql函数 怎么用

如何在 Laravel 的 DB 查询中编写两个 where 条件?

Laravel:在不同的行中使用不同的 where 条件进行查询

Laravel 4:将 where 子句添加到连接条件