20

Symfony2 + Doctrine から始めます。

ユーザー オブジェクト (fos_user) を含むテーブルがあり、スキーマには「配列」タイプのロール列が含まれています。

Doctrine は、このタイプのフィールドを php 'array' から 'longtext' (mysql の場合) にシリアライズすることで保存します。

したがって、次のユーザーが DB に保存されているとします。

User1: array(ROLE_ADMIN, ROLE_CUSTOM1)
User2: array(ROLE_ADMIN, ROLE_CUSTOM2)
User3: array(ROLE_CUSTOM2)

コントローラーで、ROLE_ADMIN が設定されたすべてのユーザーを選択したいと考えています。User1User2を直接返す DQL クエリを作成する方法はありますか? または、すべてのユーザーをフェッチして、Doctrine でロール列を非シリアル化し、それぞれに対してin_array('ROLE_ADMIN', $user->getRoles())を実行する必要がありますか?

マニュアルの DQL 部分を検索しましたが、これまでのところ、私のニーズに似たものは見つかりませんでした...

UPD:機能するクエリコードを含む同じことについての質問が見つかりました

4

1 に答える 1

13

LIKEこのマニュアルで説明されているステートメントを使用するだけです(シリアル化されたオブジェクトでもそうです)。

ロールのエンティティ クラスを作成し、それをManyToMany関連付けによってユーザー エンティティに結合することをお勧めします。

于 2012-10-29T17:46:43.260 に答える