如何从laravel中的两对多关系中获得常见模型?

时间:2015-01-30 15:06:36

标签: php laravel laravel-4 many-to-many eloquent

有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。:我想用口才来完成这项任务。 DB :: *会做,但我需要雄辩的实现,因为我正在使用Dingo API来完成一些REST API。

1 个答案:

答案 0 :(得分:2)

使用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);

使用with()

也不要忘记eager load您的相关模特