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 がマッピング テーブルとして使用されます。ただし、以前にコーディングした開発者は、(uid、rid) のペアごとに異なる行を使用するのではなく、rid をコンマ区切りのロール ID として users_roles に挿入することを選択しました。
したがって、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();
}
完全な例外:
致命的なエラー: メッセージ「SQLSTATE[HY000]: 一般エラー: 1395 Can't delete from join view 'users_roles_view'' の vendor\doctrine\dbal\lib\Doctrine\DBAL\Connection.php 行 754 で例外 'PDOException' がキャッチされませんでした」