Laravel查询返回列未找到

时间:2019-01-21 05:05:07

标签: php laravel

我想获取产品列表,如果我的收藏中不存在这些产品。但它返回未找到的列。

错误

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

one

逻辑

通过上面的查询,我应该获得所有状态为有效的产品,但ID为3, 4, 20的产品除外,因为它们已签名到此收藏集。

有什么主意吗?

1 个答案:

答案 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();