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 がマッピング テーブルとして使用されます。ただし、以前にコーディングした開発者は、(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' がキャッチされませんでした」

4

1 に答える 1

0

これは Doctrine2 に存在すると思いますか?

find_in_set()
于 2013-02-08T16:55:22.550 に答える