如何从 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()