Laravel如何在建立查询时访问关系?

时间:2018-08-17 19:07:45

标签: php laravel

假设我有桌子

公司 ID |名称
客人 ID |名称
ID |名称

他们有关系模型
公司-> hasMany->客人
访客-> hasMany->预订

现在,我想获得所有来自特定公司的客人的书籍
我不知道如何在雄辩的ORM中达到目标
我会很感激的
谢谢

2 个答案:

答案 0 :(得分:0)

$company = Company::with("guests.books")->find($id); //或公司的成立没关系

$company->guests->books //为您提供所需的内容。

请注意,with("guests.books")不是必需的,但是它可以在单个查询中为您提供所有数据

有关更多信息,您可能想查看official docs关于关系的信息

答案 1 :(得分:0)

您可以使用whereHas根据关系的存在进行查询:

$books = Book::whereHas('guest.company', function ($query) use ($companyId) {
    $query->where('id', $companyId);
})->get();

大致:获取ID为$companyId的公司客人的所有书籍

Laravel Docs - 5.6 - Eloquent - Relationships - Querying Relationship Existence