Laravel:通过另一个 table 从具有关联 table 的 table 检索记录

Laravel: Retrieve records from a table with an associated table via another table

这是我的问题。

我有 3 个表:

  1. 预订(id,spot_id,...)

一个预订有一个名额,一个名额有多个预订

  1. spots (id, place_id,...)

一个地方有一个地方,一个地方有多个地方

  1. 地方(id,...)

而我想要的是从 BookingController 得到 包含相关地点的预订列表

类似的东西:

Booking::where("ok",1)->with("place")->get();

我已经在所有三个模型中拥有“hasMany”和“belongsTo”关系。我已经在预订模式中尝试了“hasOneThrough”,但无济于事。

我该怎么做谢谢。

如果您始终希望将地点包含在预订模型中,您可以将它们添加为属性:

namespace App\Models;

class Booking{
    public $appends = ['places'];

    public function getPlacesAttribute()
    {
        return $this->hasMany(Place::class);
    }
}

现在您可以直接从预订 class 访问地点,例如 $booking->places