Встроенные ссылки в jenssegers/laravel-mongodb для предотвращения дублирования данных

У меня есть коллекции: пользователи, организации, электронные письма. Пользователь может иметь 1..* электронные письма. Несмотря на это, организация может иметь 1..* электронные письма.

Без связывания таблиц (это принцип NoSQL), это мои коллекции:

Коллекция пользователей:

[{'_id': ObjectId ("54feabdae75a4f4168b7acd9"), 'name': 'Henri', 'emails': [{'_id': '54feabdae75a4f4168b7acda'}]}]

Организационная коллекция:

[{'_id': ObjectId ("54feabdae75a4f4168be24a4"), 'name': 'MyOrg.org', 'emails': [{'_id': '54feabdae75a4f4168b7acda'}]}]

Коллекция электронной почты:

[{"_id": ObjectId ("54feabdae75a4f4168b7acda"), "электронная почта": "henriabc@gmail.com" }]

Мои отношения с моделью пользователя и моделью организации:

public function emails() {
    return $this->embedsMany('App\Email');
}

Звоните, чтобы нетерпеливо загрузить:

public fullUser($id) {
    return User::find($id)->with('emails')->get();
}

Но как (стремиться) загрузить пользователя с его электронной почтой? Метод выше не заполняет электронные письма.

1 ответ

Использовать этот:

public fullUser($id) {
    $user = User::find($id);
    $user->emails();
    return $user();
}
Другие вопросы по тегам