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
wherecategory\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,把它作为答案发布,这样我就可以选择它作为正确的答案