私は3つのエンティティを持っています:
[Member] ----OneToMany----> [MemberCategory] ---ManyToOne---> [Category]
これは、データベースから結果を取得する限りはうまく機能しますが、フォーム ビルダーで正しいフォーム コントロールを構築することができません。
メンバーが使用するカテゴリのチェックボックスがオンになっているすべてのカテゴリのリストが必要です。最終的には、優先フィールドを追加したいと考えています。
メンバー
class Member
{
protected $id;
@ORM\OneToMany(targetEntity="MemberCategory", mappedBy="member")
protected $categories;
}
カテゴリー
class Category
{
protected $id;
@ORM\Column(name="category_name", type="string", length=50, nullable=false, unique=true)
private $categoryName;
}
会員区分
class MemberCategory
{
@ORM\Id
@ORM\ManyToOne(targetEntity="Member")
@ORM\JoinColumns({
@ORM\JoinColumn(name="member_id", referencedColumnName="id", onDelete="CASCADE")
private $member;
@ORM\Id
@ORM\ManyToOne(targetEntity="Category")
@ORM\JoinColumns({
@ORM\JoinColumn(name="category_id", referencedColumnName="id", onDelete="CASCADE")
private $category;
@ORM\Column(name="priority", type="integer", nullable=true)
protected $priority;
}
機能しないフォームビルダーの明らかな試み。
私が使用する場合:
$builder->add('categories', 'entity', array(
'class' => 'SMWMemberBundle:Category',
'property' => 'categoryName',
'multiple' => true,
'expanded' => true,
'required' => false
));
すべてのカテゴリを選択できますが、このメンバーの MemberCategory で選択されたものはありません。
私が使用する場合:
$builder->add('categories', 'entity', array(
'class' => 'SMWMemberBundle:MemberCategory',
'property' => 'category.categoryName',
'multiple' => true,
'expanded' => true,
'required' => false
));
すべてのユーザーの選択されたすべてのカテゴリを取得します。
これを機能させる方法を知っている人はいますか?これはリレーショナル データの明らかな一般的なパターンであり、SQL と PHP を使用すると簡単です。
Symfony 2.3 と Doctrine に簡単な解決策はありますか?