Полиморфная проблема в отношениях между людьми

Итак, я пытаюсь разобраться с полиморфизмом в Laravel.

Я создаю сайт, который имеет 2 разных типа пользователей (рекрутеры, кандидаты)

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

| id | Имя пользователя электронная почта | пароль | detailable_id | detailable_type

Остальные детали будут сильно отличаться, поэтому я подумал, что могу использовать полиморфизм, чтобы помочь мне в этом. поэтому я создал еще 2 таблицы:

Рекрутеры -> содержать реквизиты рекрутера

кандидаты -> содержать конкретные данные кандидата

У меня есть модели для каждого стола

модель пользователя:

class User extends Model implements AuthenticatableContract, CanResetPasswordContract {

use Authenticatable, CanResetPassword;

protected $table = 'users';

protected $fillable = ['username', 'email', 'password'];

protected $hidden = ['password'];

public function detailable()
{
return $this->morphTo();
}
}

Модель кандидата:

class Candidate extends Model {

public function user()
{
return $this->morphOne('App\User', 'detailable');
}

}

Модель рекрутера:

class Recruiter extends Model {

public function user()
{
return $this->morphOne('App\User', 'detailable');
}
}

Так что я сделал это так, как объясняет большинство уроков (большинство объясняет, как комментарии могут быть добавлены к различным объектам)
Это, однако, не работает так, как мне нужно. В этом я могу сделать что-то вроде $user = App\Recruiter::find($recruiter_id)->user чтобы получить пользователя, если у меня есть идентификатор рекрутера или объект. Но в идеале я хочу сказать: $details = App\User::find('$user_id')->details или же Auth::user()->details

Я действительно не могу обернуть голову, как бы я сделал эту работу, кто-нибудь может помочь? Или, может быть, скажите мне, что это не может быть сделано

0

Решение

Я чувствую себя довольно глупо, так как я только что нашел ответ в документации Laravels. Вы можете сделать то, что мне нужно, с помощью этой настройки, все, что мне нужно сделать, это набрать Auth::user()->detailable и это возвращает детали для пользователя

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]