代码之家  ›  专栏  ›  技术社区  ›  mafortis

找不到Laravel查询返回列

  •  1
  • mafortis  · 技术社区  · 5 年前

    我想得到产品清单 如果它们不存在于我的收藏中 . 但它返回未找到的列。

    误差

    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 回复  |  直到 5 年前
        1
  •  2
  •   Prashant Deshmukh.....    5 年前

    尝试此查询或将其用作引用。

    $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();