[英]“Column 'id' in where clause is ambiguous” after inner joining?
[英]Inner join error - Column 'id' in where clause is ambiguous
我做了一个产品过滤器,但我必须更新。
之前,url 被传递了一个 slug 和一个 id。 我使用这个 id 来获取子类别,并在这个子类别表中保存了一个名为“line_id”的列。 我获取了在 url 中传递的 id,并寻找与此 line_id 相等的内容。 此 line_id 用于产品页面,其中有一些类别以及与每个类别对应的子类别。
现在我必须做不同的事情,我必须只取一个子类别和 select 对应于该子类别的产品。
在 products 表中,已经保存了每个子类别的 id。 所以我手动测试了它,传递了一个子类别的 id,但是在进行内部连接时它给出了一个错误。
public function nossas_marcas($slug, $id)
{
$menu_path = 'nossas_marcas';
$category = Categorie::find($id);
$lines = Line::where('situation', true)->get();
$ProductsCategories = ProductsCategory::where('id', 3);
$brandProducts = $ProductsCategories
->join('products', 'products_categories.id', '=', 'products.product_category_id')->get();
// $brandProducts = $ProductsCategories
// ->join('products', 'products_categories.id', '=', 'products.product_category_id')
// ->take(4)->orderBy(\DB::Raw('rand()'))->get(['products_categories.id', 'products_categories.title as product_category_name', 'products.title as product_title', 'products.id', 'products.ecommerce_link']);
return view('site.Nossas-marcas.index', compact(['menu_path', 'category', 'lines', 'brandProducts']));
}
错误
Illuminate\Database\QueryException
SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'id' in where clause is ambiguous (SQL: select * from `products_categories` inner join `products` on `products_categories`.`id` = `products`.`product_category_id` where `id` = 3)
我无法理解错误的原因,请有人向我解释。
你应该告诉他你的意思是什么表。 正确的形式是products_categories.id
,而不是id
。
ProductsCategory::where('id', 3);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.