如何从雄辩关系中的第三个表中获取数据雄辩的多对多关系

Posted

技术标签:

【中文标题】如何从雄辩关系中的第三个表中获取数据雄辩的多对多关系【英文标题】:How to get data from third table in eloquent relationships eloquent many to many relationship 【发布时间】:2021-03-10 03:36:51 【问题描述】:

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

Book
    id
    name
    
Category 
    id
    name
    type
    
BookCategory 
    id
    book_id
    category_id

【问题讨论】:

【参考方案1】:

例如,假设您想要获取某个类别的所有书籍: 假设您的数据透视表名称是 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();

【讨论】:

【参考方案2】:

如果我理解正确,您正在寻找数据透视属性。这使得中间表的其他列可用。

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

【讨论】:

以上是关于如何从雄辩关系中的第三个表中获取数据雄辩的多对多关系的主要内容,如果未能解决你的问题,请参考以下文章

雄辩的多对多关系总是空的

Laravel 5 雄辩的多对多关系问题

Laravel 多对多中的雄辩关系通过

Laravel - 雄辩的关系 - 多对多 - 获取中间表列

Laravel 雄辩的多对多模型

两个多对多相关表之间的Laravel雄辩关系