如何从 eloquent 关系 eloquent 多对多关系中的第三个 table 获取数据

How to get data from third table in eloquent relationships eloquent many to many relationship

我正在使用 Eloquent ORM,我有连接到 BookCategory 模型的 Book 模型和连接到 Category 的 BookCategory。我面临的问题是如何在 eloquent 关系中包含来自第三个 table 的数据?

Book
    id
    name
    
Category 
    id
    name
    type
    
BookCategory 
    id
    book_id
    category_id

如果我没理解错的话,您正在寻找主元属性。这使得中间 table 的其他列可用。

https://laravel.com/docs/8.x/eloquent-relationships#retrieving-intermediate-table-columns

举个例子,你想要获取某个类别的所有书籍: 假设你的枢轴 table 名称是 Book_Category 在您的类别模型中:

public function books()
{
    return $this->belongsToMany('App\Models\Book', 'Book_Category', 'category_id', 'book_id');
}

并且您可以像这样预先加载类别书籍:

$categories = Category::get()->load('books');
//OR
$categories = Category::with('books')->get();