У меня есть 3 сущности:
[Member] ----OneToMany----> [MemberCategory] ---ManyToOne---> [Category]
Это хорошо работает для извлечения результатов из базы данных, но я не могу заставить Form Builder создать правильные элементы управления формой.
Мне нужен список всех категорий с флажками, которые отмечены для тех категорий, которые используются участником. В конце концов я хочу добавить поле приоритета.
Член
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?