Laravel Eloquent具有多个通过3个表的数据透视表

xzlaal3s  于 2023-03-04  发布在  其他
关注(0)|答案(1)|浏览(132)

我需要从我的位置-〉区域-〉预订模型范围中列出范围。
我的表看起来像这样:

Booking
    id
    ...

Position
    id
    booking_id
    ...

Area
    id
    ..

Position_areas
    id
    area_id
    position_id

Scope
    id
    ...

Area_Scopes
    id
    area_id
    scope_id

这是我的亲戚
x一个一个一个一个一个x一个一个二个一个x一个一个三个一个x一个x一个x一个x一个x一个x一个
我想在我的预订模式中列出所有区域,但我不知道如何实现。
所以我才能做这样的事

...

$booking->load('scopes');

[
    id
    date
    ...
    scopes => [
        {...},
        {...}

    ]
]

我试着为position_areas 创建透视模型,但是我甚至不能在我的预订模型上得到一个区域列表。

wkftcu5l

wkftcu5l1#

我想不出如何用hasManyThrough这样的关系来解决这个问题,但作为变通方案,我在我的$bookings中提供了所有的作用域。

$booking = Booking::find($booking->id);
$booking->scopes = $booking->positions
                           ->pluck('areas')
                           ->flatten()
                           ->pluck('scopes')
                           ->flatten()
                           ->pluck('name')
                           ->unique()
                           ->values()
                           ->all();

相关问题