Php Laravel 5/Elount-查询过滤属于多个关系
假设我的数据库中有以下关系: 产品 id |名称 类别 id |名称 产品类别 id |产品|类别| idPhp Laravel 5/Elount-查询过滤属于多个关系,php,laravel,eloquent,orm,Php,Laravel,Eloquent,Orm,假设我的数据库中有以下关系: 产品 id |名称 类别 id |名称 产品类别 id |产品|类别| id 我可以使用Elounce的模型,通过“归属”关系轻松构建它: 产品具有“类别”公共功能,称为“类别”,类别具有“产品”公共功能 现在,我有一个页面,用户希望通过单击类别名称来过滤给定类别的所有产品 程序将把类别id传递给我的控制器,现在开始解决问题 我可以通过编写以下代码“手动”轻松完成: $products = Product::query()
我可以使用Elounce的模型,通过“归属”关系轻松构建它: 产品具有“类别”公共功能,称为“类别”,类别具有“产品”公共功能 现在,我有一个页面,用户希望通过单击类别名称来过滤给定类别的所有产品 程序将把类别id传递给我的控制器,现在开始解决问题 我可以通过编写以下代码“手动”轻松完成:
$products = Product::query()
->leftJoin('product_category', 'product.id', '=', 'product_category.product_id')
->leftJoin('category', 'product_category.category_id', '=', 'category.id')
->where('category_id', '=', 2);
但这将使在模型类中定义关系的过程几乎毫无用处
有没有更好的制作方法,也许是使用ORM的东西
非常感谢你 使用
where has
:
$products = Product::whereHas('categories', function ($q) {
$q->where('id', request()->input('category_id'));
})->get();
看。它就像一个符咒!谢谢我唯一需要修正的是where列的名称,因为id是“不明确的”。我必须明确地告诉他使用类别id。