Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel多对多查询_Laravel_Laravel 5_Eloquent - Fatal编程技术网

Laravel多对多查询

Laravel多对多查询,laravel,laravel-5,eloquent,Laravel,Laravel 5,Eloquent,因此,我有一个products表和一个categories表以及一个pivot表 产品(产品) --身份证 --名字 类别(类别) --身份证 --名字 类别产品(类别产品) --类别识别码 --产品标识 我想获得属于某一类别的所有产品,我已通过执行以下查询获得: $products = Category::find(3)->products; 但是我如何从产品模型中访问它呢 $products = Product::? 您需要whereHas子句 或者你可以用连接来代替 $produ

因此,我有一个
products
表和一个
categories
表以及一个
pivot

产品
产品

--身份证

--名字

类别
类别

--身份证

--名字

类别产品
类别产品

--类别识别码

--产品标识

我想获得属于某一类别的所有产品,我已通过执行以下查询获得:

$products = Category::find(3)->products;
但是我如何从产品模型中访问它呢

$products = Product::?

您需要
whereHas
子句

或者你可以用连接来代替

$products = Product::select('products.*')
    ->join('category_product', 'products.id', '=', 'category_product.product_id')
    ->where('category_product.category_id', 3)
    ->groupBy('products.id')
    ->get();

SQLSTATE[23000]:完整性约束冲突:where子句中的1052列“id”不明确。这就是我在运行你的代码时遇到的错误哪个代码段给出了这个错误?您是否添加了任何其他子句、作用域等?第一个片段。@robertmylne您做了什么编辑?有什么问题吗?编辑因为某种原因被@pang拒绝了。返回$query->where('id',3);更改为返回$query->where('category_id',3);删除错误
$products = Product::select('products.*')
    ->join('category_product', 'products.id', '=', 'category_product.product_id')
    ->where('category_product.category_id', 3)
    ->groupBy('products.id')
    ->get();