我有2个模型LeaveApplication和LeaveDetails模型我将链接到内部联接休假与leaveDetails模型
LeaveApplication Model
class LeaveApplication extends Model {
public $table = 'leave_application';
protected $fillable = ['user_id', 'start_date', 'end_date'];
public function leaveDetails() {
return $this->hasMany("App\LeaveDetails", 'application_id');
}
}
这是LeaveDetails模型
class LeaveDetails extends Model {
public $table = "leave_details";
public $fillable = ['application_id','leave_date','leave_type'];
}
我尝试使用LeaveApplication::with('leaveDetails')->where('leaveDetails.leave_date','2016-10-10')->get()
它给我错误, 这不是在雄辩中创建内部联接。
我也使用whereHas('leaveDetails')
,这不使用内连接
答案 0 :(得分:1)
LeaveApplication::with('leaveDetails')->where('leaveDetails.leave_date','2016-10-10')->get()
它不起作用,因为Laravel查询使用很少的连接。如果您正在进行预先加载,我建议您使用constrained eager loading。您的Eloquent查询将如下所示:
LeaveApplication::with(['leaveDetails' => function($query){
$query->where('leave_date', '2016-10-10');
}]);
如果您想知道Eloquent将生成什么类型的查询,请尝试使用toSql()转储它。