【发布时间】:2021-02-24 07:49:46
【问题描述】:
我正在尝试编写一个查询,列出purchased = true 所在的所有产品。如果产品将字段 includes_bonus 设置为 true,则应在刀片上隐藏 ID 为 2 的奖励产品。
用例:
如果 includes_bonus 在任何产品记录上设置为 1,则始终隐藏 id 为 2 的产品。如果 includes_bonus 在所有记录上为 0,则始终显示 id 为 2 的产品。
当前查询
下面是我创建的查询,问题是当您关闭 includes_bonus 设置为 true 的产品,然后单独打开 id 为 2 的产品时,它会隐藏该记录。
$purchasedProducts = $user->products()->where('purchased', 1);
if ($user->products()->where('includes_bonus', '=', 1)->first()) {
$purchasedProducts->where('products.id', '!=', 2);
}
$purchasedProducts = $purchasedProducts->get();
刀片foreach
然后我计划遍历每条记录并将其显示在页面上
@foreach($purchasedProducts as $purchasedProduct)
如何修改此查询以确保当includes_bonus 为真且始终显示其假时,产品 id 2 始终隐藏?
【问题讨论】:
-
因此,如果
$purchasedProducts中任何产品上的includes_bonus为1,则隐藏记录2 ...如果includes_bonus未在任何产品上设置为1,则显示记录?您可以获取所有记录,然后根据需要过滤掉记录 2 -
是的,这就是我需要的。我一直看到建议的过滤,但我不知道如何将它应用到我的用例中,您介意为我提供一个示例/答案吗?
标签: laravel if-statement foreach eloquent laravel-blade