0

我有 2 个模型 LeaveApplication 和 LeaveDetails 模型我将链接到内部加入 leave 与 leaveDetails 模型

离开应用模型

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

4

1 回答 1

1
LeaveApplication::with('leaveDetails')->where('leaveDetails.leave_date','2016-10-10')->get()

它不起作用,因为 Laravel 查询使用很少的连接。如果您使用急切加载,我建议使用受约束的急切加载。您的 Eloquent 查询将如下所示:

LeaveApplication::with(['leaveDetails' => function($query){
                                           $query->where('leave_date', '2016-10-10');
                                          }]);

如果您想知道 Eloquent 会生成什么样的查询,请尝试使用toSql()转储它。

于 2016-12-15T07:50:05.543 回答