在Laravel中联接两个表

时间:2019-12-11 11:27:19

标签: laravel

我对Laravel非常陌生,在这里我有一个简单的问题。我需要将另一个表添加到以下

   return $products = Product::where('product_type_id', 1)
                            ->where('quantity', '>=', 50)
                             ->where('deleted', 0)
                            ->orderBy('price')
                            ->paginate(100);

我还有另一个表名称product_img,用于存储产品的所有图像。需要获取所有记录,其中product_img表中有产品ID且文件不等于“ Noimg.jpg”。我尝试了其他解决方案,但没有成功。如何在Laravel中联接两个表?

我尝试执行以下操作:

$products = Product::leftJoin('product_img', function($join) {
                                $join->on('products.id', '=', 'product_img.product_id')
                                ->where('product_img.file', '!=', 'Noimg.jpg');
                             }) ;
                                ->where('quantity', '>=', 100)
                                ->where('deleted', 0)
                                ->orderBy('price')
                                ->paginate(100);

2 个答案:

答案 0 :(得分:1)

$products = Product::join('product_img', 'products.id', '=', 'product_img.product_id')
                                ->where('product_img.file', '!=', 'Noimg.jpg')
                                ->where('quantity', '>=', 100)
                                ->where('deleted', 0)
                                ->orderBy('price')
                                ->paginate(100);

答案 1 :(得分:0)

在SQL中,“不等于”的正确符号是<>,对于编程语言,!=是正确的符号。

 $products = Product::join('product_img', function($join) {
                                $join->on('products.id', '=', 'product_img.product_id')
                                ->where('product_img.file', '<>', 'Noimg.jpg');
                             }) ;
                                ->where('quantity', '>=', 100)
                                ->where('deleted', 0)
                                ->orderBy('price')
                                ->paginate(100);