Встроенные ссылки в 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();
}