在条件中联接Laravel中的两个表

时间:2019-12-12 09:45:14

标签: laravel join relational-database

我要加入两个表,但要满足以下条件:仅显示产品类型为1的产品,并且该产品应在img tbl中可用,并且不应该具有noImg.jpg

products tbl                  img tbl
+-------------------------+   +--------------------------------+
| id   | product_type         | id    | product_id | file
---------------------------   +---------------------------------
| 123  |  1                    | 1    |123         | 1.jpg
| 234  |  2                    | 2    |234         | noImg.jpg
| 345  |  1                    | 3    |345         | 3.jpg

我在Laravel中进行了以下操作,但查询似乎不正确,因为它没有给我正确的结果。

Product::join('img', function($join) {
                                $join->on('products.id', '=', 'img.product_id')
                                ;
                             })
                                ->where('img.file', '!=', 'noImg.jpg')
                                ->where('products.product_type', 1)
                                ->paginate(100);

2 个答案:

答案 0 :(得分:1)

尝试

Product::rightJoin('img', function($join) {
            $join->on('products.id', '=', 'img.product_id')
            ;
        })
            ->where('img.file', '<>', 'noImg.jpg')
            ->where('products.product_type','=',1)
            ->get();

答案 1 :(得分:0)

尝试此代码

Product::rightJoin('img', function($join) {
    $join->on('products.id', '=', 'img.product_id')
        ->where('img.file', '!=', 'noImg.jpg');
    })
    ->where('products.product_type', '=', 1)
    ->paginate(100);

我相信img和产品是您的表名。