Кохана "имеет много" вопроса

У меня есть модель с именем разрешения.

Разрешение имеет много ролей Разрешение имеет много пользователей Разрешение имеет много запрещенных пользователей

Ниже из модели разрешений:

protected $_has_many = array(
    'user' => array('through' => 'user_permission'),
    'permissiondeny' => array('model' => 'user', 'through' => 'user_permissiondeny','foreign_key' => 'permissiondeny_id'),
    'role' => array('through' => 'role_permission'),
);

Отношения пользователя и роли работают как положено. Я могу выбрать разрешение "Запретить", но когда я пытаюсь добавить новое, я получаю следующую ошибку php:

Неустранимая ошибка PHP: Uncaught Database_Exception [ 1110 ]: столбец'missiondeny_id'указан дважды [INSERT INTO user_permissiondeny (permissiondeny_id, permissiondeny_id) VALUES ('1', 1)] ~ MODPATH / database / classes / kohana / database / mysql.php [194]

Любые предложения относительно того, что я скучаю?

1 ответ

Решение

Поскольку вы не соблюдаете соглашения об именах в ORM, вам необходимо изменить has_many объявление:

protected $_has_many = array(
  'user' => array('through' => 'user_permission'),
  'permissiondeny' => array('model' => 'user', 'through' => 'user_permissiondeny','foreign_key' => 'permissiondeny_id', 'far_key' => 'permission_id'),
  'role' => array('through' => 'role_permission'),
);

Обратите внимание far_key часть, вам нужно указать имя столбца, который вы будете искать. может быть user_id, role_id, permission_id, так далее

Другие вопросы по тегам