为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我的雄辩查询在以后使用时会被覆盖?

为什么我的雄辩查询在以后使用时会被覆盖?

PHP
凤凰求蛊 2021-11-26 19:56:27
我遇到了一个很奇怪的问题,我找不到它的原因。我想知道是否有人遇到过同样的问题,或者是配置问题。基本上这是我的代码块。很简单的东西。$productImages = App\ProductImage::where('product_id', $product->id)->orderBy("order", "asc");$productImages_First = $productImages->first();$productImages_All = $productImages->get();如果我执行转储并死掉,$productImages_All那么它会输出以下内容:Collection {  #items: array:5}这几个月来一直很好。我根本没有接触过这块代码。但是,我在上周注意到,如果我$productImages_All现在转储并死掉,它只会返回第一个图像而不是所有图像。Collection {  #items: array:1}似乎$productImages_First = $productImages->first();正在覆盖它。这是标准行为吗?如果它是对原始雄辩查询的调用,那将是完全有意义的,我应该创建一个单独的查询来获取所有图像。然而,没有意义的是,这段代码已经运行了几个月没有改变,并且随机损坏了。我可以很快解决这个问题,我只是想看看我是否可以更清楚地了解可能导致这种情况的原因?
查看完整描述

1 回答

?
红颜莎娜

TA贡献1842条经验 获得超12个赞

这是因为当您调用第一个方法时,它会修改Eloquent/Builder 中的Query/Builder对象并将 limit 属性设置为 1,因此您必须在调用 get 方法之前重置它的值。


$productImages = App\ProductImage::where('product_id', $product->id)- 

>orderBy("order", "asc");

$productImages_First = (clone $productImages)->first();

$productImages_All = $productImages->get();

或者你可以


$productImages = App\ProductImage::where('product_id', $product->id)- 

>orderBy("order", "asc");

$productImages_First = $productImages->first();

$productImages->getQuery()->limit=null;

$productImages_All = $productImages->get();


查看完整回答
反对 回复 2021-11-26
  • 1 回答
  • 0 关注
  • 181 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信