我想获取产品列表,如果我的收藏中不存在这些产品。但它返回未找到的列。
SQLSTATE[42S22]: Column not found: 1054 Unknown column '1' in 'on clause' (SQL: select * from `products` inner join `collection_products` on `collection_products`.`collection_id` = `1` and `collection_products`.`product_id` != products.id where `products`.`status` = active)
public function edit($id)
{
$collection = Collection::findOrFail($id);
$products = DB::table('products')
->where('products.status', 'active')
->join('collection_products', function ($join) use($id) {
$join->on('collection_products.collection_id', '=', $id)
->where('collection_products.product_id', '!=', 'products.id');
})
->get();
return view('admin.collections.edit', compact('collection', 'products'));
}
collection_products Table
通过上面的查询,我应该获得所有状态为有效的产品,但ID为3, 4, 20
的产品除外,因为它们已签名到此收藏集。
有什么主意吗?
答案 0 :(得分:2)
尝试此查询或用作参考。
$product = DB::table('products')
->join('collection_products','collection_products.product_id','!=','products.id')
->where('products.status', 'active')
->where('collection_products.product_id', '!=', 'products.id')
->where('collection_products.collection_id', '=', $id)
->get();