Laravel 5 Запрос с отношениями вызывает "Вызов функции-члена addEagerConstraints() при ошибке" null "
Я пытаюсь создать простую систему управления пользователями, но продолжаю бить дорожные блоки, когда дело доходит до запросов к отношениям. Например, у меня есть пользователи и роли, и всякий раз, когда я пытаюсь сделать запрос для всех пользователей и их ролей, я получаю сообщение об ошибке. Один в названии - только последний, с которым я столкнулся.
Мои модели пользователей и ролей выглядят так:
class Role extends Model
{
public function users()
{
$this->belongsToMany('\App\User', 'fk_role_user', 'role_id', 'user_id');
}
}
class User extends Model
{
public function roles()
{
$this->belongsToMany('\App\Role', 'fk_user_role', 'user_id', 'role_id');
}
}
Моя таблица миграции для отношений "многие ко многим" между двумя выглядит так:
public function up()
{
Schema::create('role_user', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id')->unsigned()->nullable(); //fk => users
$table->integer('role_id')->unsigned()->nullable(); //fk => roles
$table->foreign('fk_user_role')->references('id')->on('users')->onDelete('cascade');
$table->foreign('fk_role_user')->references('id')->on('roles')->onDelete('cascade');
});
}
И затем я пытаюсь получить все записи с их отношением в контроллере:
public function index()
{
$users = User::with('roles')->get();
return $users;
}
Так что мне нужна еще одна пара глаз, чтобы рассказать мне, что мне здесь не хватает?
Ответы
Ответ 1
Вам не хватает операторов возврата в методах, определяющих отношения. Им нужно вернуть определение отношения.
замещать
public function roles()
{
$this->belongsToMany('\App\Role', 'fk_user_role', 'user_id', 'role_id');
}
С
public function roles()
{
return $this->belongsToMany('\App\Role', 'role_user', 'user_id', 'role_id');
}