Laravel Eloquent JOIN WHERE id为null

时间:2016-04-27 09:52:25

标签: laravel eloquent

我无法解决如何在eloquent中完成等效的连接语句。

基本上从下面的代码我想要一个如下的查询:

SELECT * 
FROM Vehicle v
JOIN VehicleImage i ON v.id = i.vehicle_id
limit 24

这是我目前使用的查询:

$cars = Vehicle::with(['images' => function($q){
    $q->orderBy('order');
}])->take(24)->get();

目前它将所有车辆带回来,无论他们是否有图像 - 所以我猜是左边的连接。我不想要这个,我只想要有一个或多个图像的行。这可能吗?

  class Vehicle extends Eloquent
    {

        public function images()
        {

            return $this->hasMany('App\Domain\Vehicles\VehicleImage');

        }
    }

    class VehicleImage extends Eloquent {

        public function vehicle()
        {
            return $this->belongsTo('App\Domain\Vehicles\Vehicle');
        }

    }

1 个答案:

答案 0 :(得分:0)

它不会加入with。它是急切的加载,它使用2个查询。第二个是IN

因此,如果您不想使用JOIN等效项,请使用查询生成器。

Vehicle::leftJoin('...')->get();

https://laravel.com/docs/5.2/queries

此外,如果要监控查询,请安装此软件包:

https://github.com/barryvdh/laravel-debugbar

相关问题