Laravel Много-много-много отношений отношения не wowrking

0

У меня 3 таблицы

User: user_serno(primary key), username, email

Role: role_serno(primary key), name

User_role_pivot: user_role_privot_serno(primary key), user_serno(foreign key), role_serno(foreign key)

И у меня есть ownToMany в моей UserModel

public function roles() {
    return $this->belongsToMany('App\RoleModel', 
        'USER_ROLE_PIVOT', 
        'ROLE_SERNO', 
        'ROLE_SERNO');

Я пытаюсь получить пользователя с ролями, и я получаю пустой результат, проверял, что запрос не правильный.

$user = UserModel::find(121)->roles;

Я могу загрузить пользователя, но роли не работают, ниже выполняются запросы:

Во-первых: select t2.* from ( select rownum AS "rn", t1.* from (select * from USER where USER.USER_SERNO = '121') t1 ) t2 where t2."rn" between 1 and 1

Second: select ROLE.*, USER_ROLE_PIVOT.ROLE_SERNO as pivot_ROLE_SERNO from ROLE inner join USER_ROLE_PIVOT on ROLE.ROLE_SERNO = USER_ROLE_PIVOT.ROLE_SERNO where USER_ROLE_PIVOT.ROLE_SERNO is null

Почему ROLE_SERNO имеет значение null! Я думаю, что это должно быть USER_SERNO = 121

Теги:
laravel-5

1 ответ

0

Функция ownToMany в UserModel должна быть определена следующим образом:

public function roles() {
    return $this->belongsToMany('App\RoleModel', 
        'User_role_pivot', 
        'user_serno',
        'role_serno');

Для упоминания связанных ключей сначала укажите ключ текущей модели (UserModel), а затем ключ другой модели (RoleModel). Вы используете тот же ключ в обоих.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню