У меня есть следующие соотношения:Eloquent вложенности с пунктом в среднем отношении
- пользователя [многие-ко-многим с] присвоений
- Подборки [многие-ко-многим с] Жетоны
- assignment_user сводной таблицы имеет флаг «is_finished», который мне нужно, чтобы быть правдой
это мои отношения в моделях соответствия:
User.php
public function assignments()
{
return $this->belongsToMany('Assignment')->withPivot('is_finished')->withTimestamps();
}
Assignment.php
public function badges()
{
return $this->belongsToMany('Badge', 'badge_assignment')->withTimestamps();
}
Badge.php
public function assignments()
{
return $this->belongsToMany('Assignment', 'badge_assignment')->withTimestamps();
}
Я пытаюсь получить все значки для готовых присвоений моего Пользователя. Это был мой запрос:
$user = User::with(array(
'assignments' => function($query) {
$query->where('is_finished', '=', true)->orderBy('updated_at', 'desc');
})
)
->with('badges')
->username($name)->first();
Однако это делает ошибку "Вызов на неопределенный метод Осветите \ Database \ Query \ Builder :: значки()", когда я использую Еогеасп ($ user-> assignments-> значки. ..).
Затем я попытался получить значки в области видимости сначала с, но я не знаю, как достичь is_finished:
$user = User::with(array(
'assignments.badges' => function($query) {
$query->where('is_finished', '=', true)->orderBy('updated_at', 'desc');
})
)
->username($name)->first();
С этим я получаю «столбец не найден», так как запрос поиск is_finished внутри значков, а не отношений assign_user.
Как я с этим вопросом, я попытался это просто, чтобы быть уверенным:
User::with('assignments.badges')->whereUsername($username);
... и я все еще получаю «Undefined свойство: Осветить \ Database \ Eloquent \ Коллекция :: $ значки» ,
Что я делаю неправильно?
используя код делает ту же ошибку, как мой третий (простой) попытка: «Не определено свойство: загоритесь \ Database \ Eloquent \ Коллекция :: $ значки» , FYI, я использую значки $ user-> assignments-> в моем представлении после получения результатов запроса. – Anonymous
Я не думаю, что это так. Вероятно, вы пытаетесь вызвать что-то вроде этого: '$ user-> assignments-> badges', и, очевидно, это вызовет эту ошибку. Для самой загруженной загрузки мой код - это путь, поверьте мне. Ну, да, вы не можете этого сделать, конечно, вы хотите получить отношение «model» к «коллекции» моделей - вам нужен цикл foreach, например. –
Глупый я, конечно, ты прав. Я был глуп и пытался получить значки, не выполняя второй цикл для каждого задания. Большое спасибо за быстрое решение! – Anonymous