Отношения Laravel HasMany

Я храню несколько записей адресов, принадлежащих пользователю. но когда я пишу с помощью dd, я не могу получить доступ к данным другой таблицы.

Следуя моему коду:

user Таблица

id |    name       | country |
--- --------------  ----------   

7  | Mr. Lenny Bins| Belgium
2  | Dalton Miller | Swaziland

address Таблица

user_id | address         
-------- ---------
7       | 740 Brown Greens Suite  
7       | 9906 Cleora Wall Apt.      
2       | 53977 Kip Center Apt

UserModel

 public function getAddress()
    {
        return $this->hasMany(Address::class);
    }

UserController

$users = User::where('id' ,7)->with('getAddress')->get();

dd($users->toArray());
// The output of this is below

Отношения Laravel HasMany

dd($users->getAddress->toArray());

Я получаю сообщение об ошибке, когда я пытаюсь сделать это.

Свойство [getAddress] не существует в этом экземпляре коллекции.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
47
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

$users = User::with('getAddress')->where('id',7)->first();

дд ($ пользователей);

Я понимаю, а как тянуть только адреса?

JFeel 07.05.2022 11:48

Ну, вы вытягиваете пользователей, а не адреса, поэтому у вас есть пользователь с отношением getAddress. Вы можете использовать select getAddress.* или просто запросить адрес, где есть пользователь с идентификатором 7.

Marcel Santing 07.05.2022 16:19
Ответ принят как подходящий

Во-первых, вы используете get, который вернет коллекцию. Далее вы получите всех пользователей с их адресами.

$users = User::where('id' ,7)->with('getAddress')->get();

Вы можете использовать first() вместо get(), так как вы находите только одного пользователя.

$user = User::where('id' ,7)->with('getAddress')->first();

Если вам нужен только адрес этого пользователя, используйте

dd($user->getAddress)

Или если вы хотите только в форме использования массива

dd($user->getAddress->toArray())

Модель пользователя

public function getAddress()
{
  return $this->hasMany('App\Address');
}

Получить пользователей

$users = \App\User::with('getAddress')->where('id' ,7)->get();

Итерация и чтение данных

foreach ($users as $user) {
  echo '<pre>' , var_dump($user->getAddress()->first()['address']) , '</pre>';
}

Другие вопросы по теме