Laravel:对布尔值进行循环以检查TRUE和FALSE


Laravel: Loop on booleans to check TRUE and FALSE

我需要一些帮助。我在我的laravel环境中设置了关系,我想检索所有标记为takenslots

因此,它只是在每个插槽上循环,并检查taken是真是假。

以下是我的想法。。一直在尝试

$plateCont = 'App'Models'PlateContainer::find(7);
  return   $freeslots = $plateCont->containerSlots()->get();

  foreach ($freeslots as $slot)
  {
    if($slot->where('taken', false))
    {
      return $slot->lists('slot');
    }
    // return $slots;
  }

为此,我得到了200状态代码,但没有显示任何内容。你能告诉我做这件事的好方法吗。

它只是获取指定id的所有插槽,并检查它们是否为taken。如果它们不是taken返回时隙,否则返回all时隙

更新get()链接到containerSlots()之后。Foreach正在归还所有东西。

[
    1,
    7,
    9,
    5,
    3,
    5,
    4,
    3,
    2,
    1,
    5,
    1,
    8,
    9,
    8,
    5,
    5,
    1,
    8,
    5,
    1,
    5,
    8,
    8,
    4,
    5,
    8,
    4,
    2,
    1
]  

您可以使用过滤器

$freeslots = $plateCont->containerSlots->filter(function($item) {
    return $item->taken;
})

您可以尝试只获取takenslot

$freeslots = $plateCont->containerSlots()->where('taken', true)->get()