【发布时间】:2016-04-27 09:52:25
【问题描述】:
我无法弄清楚如何在 eloquent 中执行相当于 join 语句的操作。
基本上从下面的代码我想要一个如下查询:
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();
目前它带回所有车辆,无论它们是否有图像 - 所以我猜是左连接。我不想要这个,我只想要有 1 个或更多图像的行。这可能吗?
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');
}
}
【问题讨论】:
-
with不加入。它是急切的加载,它使用 2 个查询。第二个是IN。