我的查询有问题。 我有3个模型:课程,MainTask和任务。 课程有很多MainTasks,MainTask有很多任务。
我有用户当前MainTask存储在数据库中,我想选择具有主要任务的课程和用户当前主要任务和课程的任务。
我的尝试:
$tasks=Course::where('id',$current->current_course)->whereHas('mainTask', function ($q) use ($current)
{
$q->where('id',$current->current_main_task_id);
})->with('mainTask.task')->first();
但这会返回所有主要任务而不仅仅是1。
class Course extends Model
{
public function mainTask () {
return $this->hasMany('App\MainTask');
}
}
class MainTask extends Model
{
use SoftDeletes;
public function task () {
return $this->hasMany('App\Task');
}
public function course () {
return $this->belongsTo('Courses');
}
}
class Task extends Model
{
use SoftDeletes;
public function mainTask () {
return $this->belongsTo('MainTask');
}
}
任何提示?
由于
答案 0 :(得分:1)
看起来加载mainTask中的关系是最简单的:
MainTask::with('course', 'task')->find($current->current_main_task_id);
将加载1个主要任务及其所有任务
答案 1 :(得分:0)
$tasks=Course::where('id',$current->current_course)
->with(['mainTask' => function ($q) use ($current)
{
return $q->where('id',$current->current_main_task_id);
},'mainTask.task'])->first();