当我尝试删除 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 行删除