Как настроить столбцы Auth :: user () с внешним ключом? Laravel

Во-первых, каждый раз, когда мы входим в laravel, по умолчанию пользователь (таблица) всегда доступен, просто используя Auth :: user ().

См. 2 таблицы ниже:
 введите описание изображения здесь Моя проблема в том, как добавить столбцы подписчика к пользователям (таблица), используя subscriber_id из таблицы пользователей в качестве внешнего ключа .

Я ожидаю, что я хочу, чтобы все эти (ниже) были доступны во всем мире после входа в систему.

Auth::user()->name
Auth::user()->age
Auth::user()->gender
Auth::user()->marital_status
Auth::user()->subscriber_id
Auth::user()->subscriber_name
Auth::user()->subscriber_status
Auth::user()->subscriber_created_at
Auth::user()->subscriber_created_at

Я искал ответ в Google, но ничего не помогает. Я бы хотел, чтобы кто-нибудь помог мне в этом.


person gecko    schedule 12.03.2019    source источник
comment
Можно добавить отношение к модели User, которое ссылается на таблицу подписчиков.   -  person Adam    schedule 12.03.2019
comment
@ Адам, это моя мысль, сэр. Не могли бы вы научить меня, сэр. Извините за мое незнание   -  person gecko    schedule 12.03.2019


Ответы (2)


См. https://laravel.com/docs/5.7/eloquent-relationships

Установите отношения на модели пользователей.

Пример для отношения один к одному:

public function subscriber()
{
    return $this->hasOne('App\Subscribers', 'id', 'subscriber_id');
}
person JoaoGRRR    schedule 12.03.2019
comment
Готово, сэр. Мой следующий вопрос: как получить доступ к столбцам подписчика? Я пробовал это имя Auth :: subscriber () - ›, но возвращает сообщение об ошибке. Метод Illuminate \ Auth \ SessionGuard :: subscriber не существует. - person gecko; 12.03.2019
comment
Этот код устанавливает взаимосвязь, лучше всего на вашем контроллере: $ subscriber = Auth :: User () - ›subscriber () -› first (); Они переходят к просмотру и получают доступ, например, $ subscriber- ›имя. Или вы можете получить доступ напрямую с помощью Auth :: User () -› subscriber () - ›first () -› name - person JoaoGRRR; 12.03.2019
comment
Я понял, сэр, спасибо. Этот работает Auth :: user () - ›подписчик-› имя - person gecko; 12.03.2019

Я создал Subscriber.php (модель), состоящий из столбца выше, а затем я поместил ниже коды в свой User.php (модель):

public function subscriber()
{
    return $this->hasOne('App\Subscriber', 'id', 'subscriber_id');
}

А затем, чтобы получить доступ ко всем столбцам, я сделал следующее:

Auth::user()->name
Auth::user()->age
Auth::user()->gender
Auth::user()->marital_status
Auth::user()->subscriber_id

Auth::user()->subscriber->id
Auth::user()->subscriber->name
Auth::user()->subscriber->status
Auth::user()->subscriber->created_at
Auth::user()->subscriber->updated_at
person gecko    schedule 12.03.2019