2015-11-20 6 views
3

У меня есть 2 таблицы: USERS и SUBJECTSLaravel Eloquent Отношения пользовательского запроса

Отношения между USER и SUBJECT многие ко многим. В моделях user.php и Subject.php, я определил:

user.php

function subjects() { return $this->belongsToMany('App\User'); } 

Subject.php

function users() { return $this->belongsToMany('App\Subject'); } 

В таблице Ось subject_user и имеет 3 колонки: subject_id, user_id, finished

Значениеможет быть только между 0 и 1.

Теперь я знаю, что, когда я хочу выбрать все предметы, которые изучил пользователь, мне нужно написать $user->subjects.

Но что, если я хочу выбрать все предметы, которые изучил пользователь, а готовое значение в сводной таблице равно 1?

ответ

3

Вам нужно добавить "withPivot()" в определениях отношений, как это:

function subjects() { return $this->belongsToMany('App\User')->withPivot('finished'); } 

function users() { return $this->belongsToMany('App\Subject')->withPivot('finished'); } 

Тогда вы можете сделать:

$user->subjects()->where('finished', 1)->get(); 
0

Вам нужно будет загрузить эту связь и использовать метод wherePivot.

$user = User::with(['subjects' => function($q) { 
    $q->wherePivot('finished', 1); 
}])->fine($user_id);