Я довольно новичок в Laravel, и я начинаю строить отношения. У меня есть некоторые из довольно простых вещей довольно быстро, но я борюсь с чем-то более продвинутым.Laravel - Отношения, три слоя
По сути, у меня есть три вещи:
- Контакты
- Моменты
- Голы
Под каждого контакта можно сохранить моменты, разные вещи, которые я сделал с указанным Contact. Каждый Момент также может быть связан с Целью.
Теперь я пытаюсь создать страницу, на которой будут отображаться все мои цели, под которыми появятся каждый из моих Моментов, и за каждый момент я хочу получить основную информацию о том, к кому привязан момент.
Вот как мои таблицы настройка:
Голов таблица:
- id - Goal name - Goal description
Моменты таблица:
- id - userId - goalId - Moment name - Description
стол пользователя
- id - firstname - lastname
Так что я получил :
class Goal extends Model
{
public function contact() {
return $this->belongsTo('App\Contact');
}
public function moments() {
return $this->hasMany('App\Moment', 'goalId');
}
}
И я попытался следующий код, чтобы получить все результаты:
$goals = Goal::with('moments', 'contact')
->where('authId', Auth::id())
->where('hidden', 'false')
->get();
dd($goals);
Но все контакты возвращаются утратившими ... Я пробовал разные вещи, но не смогли Покажите это еще раз.
Использует ли hasManyThrough или что-то в этом роде?
Редактировать: Таким образом, я смог собрать все это вместе, но не в том порядке, в котором я хочу. Использование:
public function contact() {
return $this->belongsTo('App\Contact', 'userId');
}
public function goal() {
return $this->belongsTo('App\Goal', 'goalId', 'id');
}
$moments = Moment::with('goal', 'contact')
->where('authId', Auth::id())
->where('hidden', 'false')
->get();
dd($moments);
теперь у меня есть $ моменты объект, который содержит ссылки на правильную цель и контакт, за исключением того, я хочу, чтобы иметь возможность сортировать его по цели, это возможно?
Благодарим за помощь!
Приветствия, Все
решаемые
решаемые его с помощью следующих действий:
public function contacts() {
return $this->hasMany('App\Contact', 'id', 'userId');
}
public function moments() {
return $this->hasMany('App\Moment', 'goalId');
}
$goals = Goal::with('moments', 'moments.contact')
->where('authId', Auth::id())
->where('hidden', 'false')
->get();
dd($goals);
как, цель и связанный контакт? внешний ключ? если так, я не могу найти его в ** - id - Название цели - Описание цели **. Laravel, как правило, ожидают, что contact_id существует в таблице целей. –
Код для ваших контактных отношений в настоящее время предполагает наличие поля 'contact_id' в таблице' goals'. Это так? – patricus
Нет, если он существует, попытался запустить его без вашего предложения where? я подозреваю, что что-то делать со строкой, связанной где. –