У меня есть три таблицы базы данных:
+------+-----------+---------------------+
| user | user_type | user_type_relations |
+------+-----------+---------------------+
У каждого пользователя может быть много типов, но у одного типа пользователя может быть только один пользователь. Для хранения этого отношения я использую третью таблицу отношений со следующей структурой:
+---------------------+
| user_type_relations |
+---------------------+
| id |
| user_id |
| user_type_id |
+---------------------+
Я определил отношения в своих моделях так:
User
модель:
public function userTypeRelations()
{
return $this->hasMany('UserTypeRelations', 'user_id', 'id');
}
UserType
модель:
public function userTypeRelation()
{
return $this->hasMany('UserTypeRelations', 'user_type_id', 'id');
}
UserTypeRelations
модель:
public function user()
{
return $this->hasMany('User', 'id', 'user_id');
}
public function userType()
{
return $this->hasMany('UserType', 'id', 'user_type_id');
}
И вот как я пытаюсь получить доступ к типу пользователя определенного пользователя в моем контроллере, прежде чем передать его в представление:
$users = User::with('userTypeRelations')->with('userType')->orderBy($order)->where('status', 'active')->paginate(10);
Я думал, что сначала я получу значение таблицы отношений, и из этого я легко получу тип пользователя для каждого пользователя, но я получаю следующую ошибку:
BadMethodCallException
Call to undefined method Illuminate\Database\Query\Builder::userType()
Что я делаю не так?