0

当我尝试删除 Doctrine 中的实体时出现此错误。

一般错误:1395 无法从连接视图中删除

我的表结构是:

   user
   ----
   aid 
   name
   email
   ...

   role
   -----
    rid
    name

   users_roles
   -----------
    uid - foreign key references User.aid
    rid - foreign key, references Role.rid

User-Role 表具有多对多关系,其中 users_roles 作为映射表。但是,之前编写代码的开发人员选择在 users_roles 中插入 rid 作为逗号分隔的角色 ID,而不是为每个 (uid, rid) 对使用不同的行。

因此,为了正确定义 Doctrine 中的关联,我创建了一个视图 UsersRolesView,如下所示:

CREATE view `users_roles_view` AS SELECT `r`.`rid` AS `rid`, `ur`.`uid` AS `uid` 
FROM (`users_roles` `ur` JOIN `role` `r`)
WHERE (find_in_set(`r`.`rid`, `ur`.`rid`) > 0) 

我的 User 实体的学说映射 xml 如下所示:

尝试删除用户实体时出现 Doctrine 错误。删除用户功能如下:

function removeUser($aid)
{
   $admin = $GLOBALS['em']->find('Admin', $aid);
   $GLOBALS['em']->remove($admin);

   $GLOBALS['em']->flush();
}

完全例外:

致命错误:未捕获的异常 'PDOException' 并带有消息 'SQLSTATE[HY000]:一般错误:1395 无法从 vendor\doctrine\dbal\lib\Doctrine\DBAL\Connection.php 中的连接视图 'users_roles_view'' 在第 754 行删除

4

1 回答 1

0

你确定这个想法存在于 Doctrine2 中吗?

find_in_set()
于 2013-02-08T16:55:22.550 回答