Laravel Eloquent Отношения между таблицей пользователей и таблицей состояний с states_id в таблице пользователей - PullRequest
0 голосов
/ 04 апреля 2020

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

У меня есть таблица пользователей, например, так:

  • id
  • first_name
  • last_name (et c.)
  • address_1 (et c.)
  • state_id
  • город (et c.)

Тогда у меня есть таблица состояний

  • id
  • state_abrv
  • имя_состояния

Теперь из того, что я Сборщик Eloquent хочет, чтобы users_id хранился в таблице состояний, а не States_id хранился в таблице пользователей, но это не имеет смысла, потому что вам придется повторять состояния снова и снова.

В моей модели User, которую я пробовал

public function state()
{
    return $this->belongsTo(State::class);
}

и

public function state()
{
    return $this->hasOne(State::class);
}

но я думаю, что он ищет внешний ключ в таблице состояний, а не в таблице пользователей. Что мне здесь не хватает?

Я хочу получить список всех пользователей, например, в представлении show user details с их состоянием без второго запроса, чтобы получить все состояния в массив и получить их состояние из этого массива.

Мне нравится

$users = User::with('state')->get();

1 Ответ

0 голосов
/ 04 апреля 2020

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

public function state()
{
    return $this->belongsTo(State::class, 'states_id'); // if the column name in your users migration is state_id then you might not need the second param. 
}

Затем вы можете получить пользователя с отношением состояний с помощью

$users = User::with('state')->get();

Я добавил states_id в качестве второго параметра, потому что это имя столбца, которое вы указали при миграции

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...