Пользовательский запрос Laravel Eloquent Relationship

У меня есть 2 таблицы: USERS а также SUBJECTS

Отношение между 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

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();
4

Другие решения

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

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

По вопросам рекламы [email protected]