2016-12-27 8 views
2

クエリに問題があります。 私はコース、メインタスク、タスクという3つのモデルを持っています。 コースには多くのメインタスクがあり、メインタスクには多くのタスクがあります。Laravel 5.3の関係の問題、1より大きい返します

私はデータベースに保存されている現在のメインタスクを持っています。メインタスクと現在のメインタスクとコースがあるタスクを持つコースを選択します。

私の試み:

$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'); 
    } 
} 

任意のヒント?

おかげ

答えて

1

あなたmainTaskからの関係をロードするように見えますが、最も簡単な次のようになります。それは当然だし、それのタスク

+0

の全てを言及するのを忘れてしまったと

MainTask::with('course', 'task')->find($current->current_main_task_id); 

は1つのメインタスクをロードします私は現在のコースを保存していると私もそれをチェックする必要があります – user3844579

+0

あなたはそれを詳述できますか?私は文脈を理解していない。 –

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(); 
+0

他の人がそれがどのように動作するかを知ることができるように、コードと一緒に説明を追加してください – hardillb

関連する問題