我无法解决如何在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');
}
}
答案 0 :(得分:0)
它不会加入with
。它是急切的加载,它使用2个查询。第二个是IN
。
因此,如果您不想使用JOIN等效项,请使用查询生成器。
Vehicle::leftJoin('...')->get();
https://laravel.com/docs/5.2/queries
此外,如果要监控查询,请安装此软件包: