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 orm where 条件中 mysql函数 怎么用
如何在 Laravel 的 DB 查询中编写两个 where 条件?