#laravel #eloquent #laravel-8
Вопрос:
Таблица пользователей ( users
):
- ID
- Имя
- Пароль
Таблица адресов пользователей ( user_addreses
):
- ID
- идентификатор пользователя
- city_id
Таблица городов ( cities
):
- ID
- Имя
Модель пользователя:
public function address() {
return $this->hasMany('AppModelsUserAddreses');
}
Как я могу узнать город по этому адресу из cities
таблицы?
UserAddreses
Модель:
public function city() {
return $this->belongsTo(City::class);
}
Ошибка: Свойство [город] не существует в этом экземпляре коллекции.
Команда, которую мне нужно выполнить:
$user = User::find(Auth::user()->id);
dd($user->address->city);
Комментарии:
1. У пользователей много адресов. Следовательно
$user->address
, это будет набор адресов. Вам нужно пройтись по адресам. Вы могли бы это сделать$user->address->city
, если бы у пользователей было по одному адресу у каждого.
Ответ №1:
Ваша ошибка заключается в том , что $user->address
возвращает a collection
, поэтому вам нужно повторять каждую из них, чтобы получить ->city
…
$cities = $user->address->map(function (Address $address) {
return $address->city;
});