Tôi có 3 đơn vị:Symfony2 Form Builder Chọn Across Tham Bảng với Metadata
[Member] ----OneToMany----> [MemberCategory] ---ManyToOne---> [Category]
này hoạt động kết quả cũng như xa như quyến rũ từ cơ sở dữ liệu, nhưng tôi không thể nhận được Form Builder để xây dựng một hình thức chính xác điều khiển.
Tôi muốn danh sách tất cả các danh mục có hộp kiểm được chọn cho các danh mục được thành viên sử dụng. Cuối cùng tôi muốn thêm trường ưu tiên.
Member
class Member
{
protected $id;
@ORM\OneToMany(targetEntity="MemberCategory", mappedBy="member")
protected $categories;
}
Thể loại
class Category
{
protected $id;
@ORM\Column(name="category_name", type="string", length=50, nullable=false, unique=true)
private $categoryName;
}
MemberCategory
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;
}
att hiển nhiên trao đổi với trình tạo biểu mẫu không hoạt động.
Nếu tôi sử dụng:
$builder->add('categories', 'entity', array(
'class' => 'SMWMemberBundle:Category',
'property' => 'categoryName',
'multiple' => true,
'expanded' => true,
'required' => false
));
tôi nhận được một lựa chọn với tất cả các loại, nhưng không ai trong số những người được chọn trong MemberCategory cho thành viên này.
Nếu tôi sử dụng:
$builder->add('categories', 'entity', array(
'class' => 'SMWMemberBundle:MemberCategory',
'property' => 'category.categoryName',
'multiple' => true,
'expanded' => true,
'required' => false
));
tôi nhận được tất cả các loại lựa chọn cho tất cả người dùng.
Có ai biết cách làm việc này không, đây là một mô hình phổ biến rõ ràng trong dữ liệu quan hệ và sẽ dễ dàng sử dụng SQL và PHP.
Có giải pháp chuyển tiếp thẳng trong Symfony 2.3 và Doctrine không?
Vui lòng điền của bạn câu trả lời, như phần chính được nhận xét trong câu trả lời của bạn – Trix