如何从 laravel 中的两个多对多关系中获取通用模型?
How to get common models out of two many to many relationships in laravel?
有 3 个模型:
Products belongstoMany Categories
Products belongstoMany Stores
Categories belongstoMany Products
Stores belongstoMany Products
如何查找属于特定类别和特定商店的所有产品?
这是我试过的:
Product::getAll()->join('categorie_product', 'categorie_product.product_id', '=', 'product.id')
->join('categorie', 'categorie.id', '=', 'categorie_product.categorie_id')
->where('categorie.name', '=', $categorieName)
->paginate(10);
有什么建议吗?谢谢..
P.S.: 我想用 eloquent 完成这个任务。 DB::* 可以,但我需要 eloquent 实施,因为我正在使用 Dingo API 来完成一些 REST API。
使用whereHas
按关系过滤:
Product::with('categorie','store')->whereHas('categorie', function($q) use ($categoryName){
$q->where('categories.name', $categoryName);
})->whereHas('store', function($q) use ($storeId){
$q->where('stores.id', $storeId);
})->paginate(10);
另外不要忘记 eager load 您的相关模型使用 with()
有 3 个模型:
Products belongstoMany Categories
Products belongstoMany Stores
Categories belongstoMany Products
Stores belongstoMany Products
如何查找属于特定类别和特定商店的所有产品?
这是我试过的:
Product::getAll()->join('categorie_product', 'categorie_product.product_id', '=', 'product.id')
->join('categorie', 'categorie.id', '=', 'categorie_product.categorie_id')
->where('categorie.name', '=', $categorieName)
->paginate(10);
有什么建议吗?谢谢..
P.S.: 我想用 eloquent 完成这个任务。 DB::* 可以,但我需要 eloquent 实施,因为我正在使用 Dingo API 来完成一些 REST API。
使用whereHas
按关系过滤:
Product::with('categorie','store')->whereHas('categorie', function($q) use ($categoryName){
$q->where('categories.name', $categoryName);
})->whereHas('store', function($q) use ($storeId){
$q->where('stores.id', $storeId);
})->paginate(10);
另外不要忘记 eager load 您的相关模型使用 with()