I'am new на Laravel, я использую версию laravel 5.4. У меня есть следующий сценарий: у меня есть одна таблица для пользователей, где я помещаю только имя пользователя и пароль, а также два других сотрудника и партнеров таблиц, где я храню все данные для пользователей, таких как имя, адрес, адрес электронной почты, телефон ....Как использовать полиморфные отношения в Laravel со всеми строками?
структураТаблицы:
пользователи - идентификатор | имя пользователя | пароль | userable_id | userable_type
сотрудников - ID | имя | телефон | электронная почта | заработная плата | позиция | departamnet
партнеры - идентификатор | имя | НазваниеКомпании
In User model:
class User extends Authenticatable
{
public function userable(){
return $this->morphTo();
}
}
Class Model:
class Employee extends Model
{
protected $fillable = [];
public function users()
{
return $this->morphOne('App\User', 'userable');
}
}
Partner Model:
class Partner extends Model
{
protected $fillable = [];
public function users()
{
return $this->morphOne('App\User', 'userable');
}
}
Теперь, если я выполняю это (приложение \ User :: first() -> userable) в tinker вернет данные из Employee/Partner только для первого пользователя. для всех() или получить() методы будут возвращать это:
App \ User :: все() -> userable Exception с сообщением «Property [userable] не существует на этом примере коллекции «. App \ User :: get() -> userable Исключение с сообщением 'Свойство [userable] не существует в этом экземпляре коллекции.'
Это любое изменение, чтобы сделать эту работу для всех пользователей списка? PS: в таблице users на userable_type у меня есть модель, а на userable_id у меня есть идентификатор строки, который соответствует модели, например Employee и 1. Спасибо заранее.
Спасибо! Я пробую это раньше только в коде, а не в Тинкере. После того, как я вижу ответ в возиться, я понимаю, что что-то не так в коде ... –