使用Eloquent在laravel内部连接

时间:2016-12-15 07:42:17

标签: php mysql laravel-5 laravel-5.2 laravel-eloquent

我有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'),这不使用内连接

1 个答案:

答案 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()转储它。