2016-03-23 5 views
1

Laravel 4はLaravelは1つのコレクション/配列内のすべての関連のモデルを取得

(のみ雄弁付き)のコレクションに関連するすべてのモデルを取得するための簡単な方法はありますか?例えば、私はそれが多くのクラスに関連して、学生のすべてを取得したい

を:

まず、私が関係してコレクションを取得する必要があります。

$classes = Class::with('students')->whereIn('code', ['A', 'B'])->get(); 

それから私がする必要があります学生をマージするコレクション全体を経る:

$allStudents = new Collection; 

foreach ($classes as $class) { 
    $allStudents = $allStudents->merge($class->students); 
} 

または私は1つのキーだけが必要な場合は、例えば、学生のidは、私はこれをやっている:

$allStudentsIds = []; 

foreach ($classes->fetch('students') as $studentsArray) { 
    $allStudentsIds = array_merge(
     $allStudentsIds, array_pluck($studentsArray, 'id') 
    ); 
} 

関連するモデルのみを取得する方法はありますか?または、何とか私はStudentモデルへのリクエストを通じてそれを作ることができますか?

答えて

0

学生をベースにした質問とクラスに参加しますか?

Student::select('student.*') 
->join('class_student', 'class_student.student_id', '=', 'student.id') 
->join('class', 'class.id', '=', 'class_student.class_id') 
->whereIn('class.id', $classes) 
->get(); 

何かがそうです。

私はそれが多対多の関係であり、class_studentが対応表であると想定した。

関連する問題