Php laravel orm:表中的条件->;相关表格->;相关表

Php laravel orm:表中的条件->;相关表格->;相关表,php,laravel,laravel-5.2,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\u stock它是这样的 Stock::with('Book')->get(); 但是如果我想在类别=1 我可以使用书上的使用条件 Stock::with

这是我的书店数据库

books : id ,title 
category : id,  title 

book_category : id , book_id,  category_id 
book_stock : id , book_id , quantity , price 
考虑到模型中定义了所有的关系,我可以查询
book\u stock
它是这样的

Stock::with('Book')->get();
但是如果我想在
类别=1

我可以使用书上的使用条件

Stock::with('Book' , function($q){
   $q->where(['title'=>'abc']);
})->get();
但如何筛选相关的图书表? 基本上我想从
book\u category
where
category\u id=1
获取
book\u id
,然后使用这些id过滤我的
书籍
最终获取
股票

ps:我不想使用查询生成器


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

$categoryId = 1;

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

Stock::with('Book.stock', 'Book.category')->get();
您可以使用语句访问
中任意数量的嵌套关系


相关问题:



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

…with('Book.stock',function($q){…}
@Andrew我在那里没有看到任何关于
图书分类的参考?根据需要添加它,你可以用
做你想要的所有
with('Book.stock',Book.category'))
。是的,应该可以。从技术上讲。@Andrew thanx,把它作为答案发布,这样我就可以选择它作为正确的答案