laravel orm:桌子上的条件 - >相关表格 - >相关表

时间:2016-10-28 11:29:55

标签: php laravel laravel-5.2

所以这是我的书店数据库

books : id ,title 
category : id,  title 

book_category : id , book_id,  category_id 
book_stock : id , book_id , quantity , price 

考虑到模型中定义的所有关系,我可以查询book_stock它是这样的

Stock::with('Book')->get();

但如果我想在stock

中获得book category = 1该怎么办?

我可以在书上使用条件

Stock::with('Book' , function($q){
   $q->where(['title'=>'abc']);
})->get();

但我如何过滤相关的书籍表? 基本上我想从book_id book_category获取category_id = 1,然后使用这些ID过滤我的books最后得到stock

  

ps:我不想使用查询构建器

2 个答案:

答案 0 :(得分:1)

这将返回属于category = 1的所有书籍及其股票信息:

$categoryId = 1;

$books = Book::with('stock')->whereHas('category', function($query) use ($categoryId) {
    return $query->where('id', $categoryId);
})->get();

答案 1 :(得分:0)

你可以这样做:

Stock::with('Book.stock', 'Book.category')->get();

您可以在with语句中访问任意数量的嵌套关系。

相关问题:

Laravel nested relationships

Armin Sam的回答也应该是一个可行的选择。