我确定我没有正确地执行此操作,因为代码非常混乱,访问级别为N eloquent relationship

时间:2017-05-02 02:10:52

标签: laravel blade

这是我在本网站发布的第一个问题,希望你能帮助我!

我的刀片中有一段代码如下所示。

    @foreach($user->orders as $order)

      @foreach($order->orderdaytimes as $orderdaytime)

        @foreach($orderdaytime->stores as $orderdaytimestore)

          @if($orderdaytime->date == $day && $orderdaytimestore->id == $store->id)

雄辩的关系如下: - 用户有很多订单 - 订单有很多订单日 - orderdaytimes属于许多商店 - 商店属于许多订单日

正如您在代码中看到的那样,我需要遍历所有这些级别,以查明是否在订单日期中记录了与特定商店相关的商店。

是否有更快捷的方法可以确定订单商店ID是否存在于订单日期 - >存储数据透视表。

1 个答案:

答案 0 :(得分:1)

如果您不需要实际的中间数据,您可以简单地查询关系:

if ($user->orders()
    ->whereHas('orderdaytimes', function ($query) use ($day) {
        return $query->where('date', $day);
    })
    ->whereHas('orderdaytimes.stores', function ($query) use ($store) {
        return $query->where('id', $store->id);
    })
    ->exists()) {
    // store id exists
}

你可以read more about querying relationships in the documentation here