Laravel 集合查询

Posted

技术标签:

【中文标题】Laravel 集合查询【英文标题】:Laravel collection querying 【发布时间】:2021-02-23 18:29:55 【问题描述】:

我已经编写了一个查询来获取结果集合,我添加了一个检查来说明记录是否包含此字段隐藏 ID 为 2 的记录。

控制器方法

  $purchasedProducts = $user->products()->where('purchased', 1);
        if ($user->products()->where('includes_bonus', 1)->first()) 
            $purchasedProducts->where('benefits.id', '!=', 2);
        

        $purchasedProducts->get();

刀片

在这里我写出了要在刀片中显示的 foreach 循环。

 @foreach($purchasedProducts as $product)
                <div class="col-xl-6 p-0 p-xl-4 mb-5 mb-xl-0">
                    <form action="route('cancel.product', $product->id)" method="POST">
                        @csrf

收到错误

Trying to get property 'id' of non-object

 <form action="<?php echo e(route('cancel.product', $product->id)); ?>" method="POST">

你能看出我哪里出错了吗?

【问题讨论】:

您从未执行过您使用 $purchasedProducts 构建的查询,它仍然是构建器,而不是结果 我将如何修改上述内容您介意提供答案吗? 【参考方案1】:

您没有将查询结果分配给任何东西,您只是在正在构建的查询上调用get(),但没有对返回的结果做任何事情。也许将它分配给一个变量:

$purchasedProducts = $purchasedProducts->get();

【讨论】:

以上是关于Laravel 集合查询的主要内容,如果未能解决你的问题,请参考以下文章

Laravel:在每次选择查询后执行集合格式化

如何合并集合和查询构建器,然后在其上使用分页 Laravel 8

Laravel 5 Eloquent - 将计算值作为列添加到集合

如何检查 Laravel 集合是不是为空?

分页 Laravel 集合

Laravel Eloquent - 如何将范围查询内的计算值作为模型列或集合属性返回