所以这是我的书店数据库
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:我不想使用查询构建器
答案 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
语句中访问任意数量的嵌套关系。
相关问题:
Armin Sam的回答也应该是一个可行的选择。