Laravel 5.3关系问题,返回超过1

时间:2016-12-27 19:01:30

标签: php laravel relationship

我的查询有问题。 我有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');
    }
}

任何提示?

由于

2 个答案:

答案 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();