General error: 1395 Can not delete from join view
我的表结构是:
user
----
aid
name
...
role
-----
rid
name
users_roles
-----------
uid - foreign key references User.aid
rid - foreign key, references Role.rid
的用户 - 角色表具有多到多的关系,与所述users_roles作为映射表。然而,之前编码的开发人员选择在users_roles中将逗号分隔为逗号分隔的角色ID,而不是为每个(uid,rid)对使用不同的行。
因此,为了合理界定主义的关联,我创建了一个视图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)
我对用户实体学说映射XML看起来是这样的:
当我尝试删除用户实体时,出现Doctrine错误。删除用户功能如下:
function removeUser($aid)
{
$admin = $GLOBALS['em']->find('Admin', $aid);
$GLOBALS['em']->remove($admin);
$GLOBALS['em']->flush();
}
完全例外:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1395 Can not delete from join view 'users_roles_view'' in vendor\doctrine\dbal\lib\Doctrine\DBAL\Connection.php on line 754
2013-01-12
janenz00