1
我有兩個型號,students
和languages
。每個學生都可以通過透視表student_language
一定技能說話ñ語言。例如邁克會講英語與3個技能,並與德國的7訂購透視列
這裏一個技能是學生型號:
class Student extends \Eloquent {
public function languages()
{
return $this->belongsToMany('Language')->withPivot('skill');
}
}
這裏是語言型號:
class Language extends \Eloquent {
public function students()
{
return $this->belongsToMany('Student')->withPivot('quality');
}
}
我怎樣才能像講一種語言的學生名單,並通過他們的技術水平排序呢?在流利它會是這樣,但我不能使用聯接,需要把它寫在雄辯:
$students = DB::table('students')
->join('student_language', 'students.id', '=', 'student_language.student_id')
->where('student_language.language_id', '=', '1')
->orderBy("student_user.skill", "desc")
->get();
謝謝你的任何投入。
編輯:更新
謝謝您的回答。它確實有效,但速度非常緩慢。我甚至有'允許的內存大小被耗盡'異常。有更快的解決方案嗎? – Adrenaxus
Arifs答案是正確的,因爲你說你不能使用連接。上面的代碼將包含一個嵌套select,它在mysql中非常慢(在Postgresql中速度要快得多)。最快的方法是使用連接,但你說你不能這樣做? (爲什麼你不能使用連接?) – delatbabel