Tôi tự hỏi cách tốt nhất để tạo biểu mẫu xử lý quan hệ nhiều-nhiều với trường bổ sung trong symfony2 là gì.Hiển thị mối quan hệ nhiều-nhiều với các trường bổ sung thành một biểu mẫu
Ví dụ: giả sử tôi muốn tạo tính năng thông báo cho người dùng. Tôi có User
và các đối tượng Notification
. Ngoài ra để có thể thêm các thông số bổ sung trong quan hệ nhiều-nhiều giữa các thực thể, tôi đã tạo một thực thể thứ ba UserNotification
. Tham số bổ sung cho biết liệu thông báo đã được đọc hay không bởi người dùng.
* @ORM\Entity() */
class Notification
{
/** @Id @Column(type="integer") */
private $id;
/** @OneToMany(targetEntity="UserNotification", mappedBy="notification") */
private $usernotifications;
/** @Column() */
private $message;
...
}
* @ORM\Entity() */
class User
{
/** @Id @Column(type="integer") */
private $id;
/** @OneToMany(targetEntity="UserNotification", mappedBy="user") */
private $usernotifications;
/** @Column() */
private $name;
...
}
* @ORM\Entity() */
class UserNotification
{
/** @ManyToOne(targetEntity="User", inversedBy="usernotifications")
private $user;
/** @ManyToOne(targetEntity="Message", inversedBy="usernotifications")
private $message;
/** @Column(type="boolean") */
private $isRead;
...
}
Bằng cách này tôi có thể có được loại dữ liệu này
User
+----+---------+
| id | name |
+----+---------+
| 1 | John |
| 2 | Paul |
+----+---------+
Notification
+----+----------------------+
| id | message |
+----+----------------------+
| 1 | Cool stuff |
| 2 | Lorem ipsum |
+----+----------------------+
UserNotification
+---------+-----------------+---------+
| user_id | notification_id | isRead |
+---------+-----------------+---------+
| 1 | 1 | 1 |
| 2 | 1 | 0 |
| 1 | 2 | 0 |
| 2 | 2 | 1 |
+---------+-----------------+---------+
Ok bây giờ ở đây là vấn đề, làm thế nào để thực hiện một hình thức cho phép để gửi một thông báo cho một số người dùng? Với một mối quan hệ nhiều-nhiều-cổ điển, nó không phải là một vấn đề. Tôi đã có một NotificationType
với builder
sau:
$builder->add('users', 'entity', array(
'class' => 'User',
'property' => 'name',
'multiple' => 'true',
))
->add('message', 'text');
Nhưng kể từ khi tôi đã phải tạo ra các trung gian UserNotification
tổ chức nào, tôi không có ý tưởng làm thế nào để làm điều đó. Cảm ơn sự giúp đỡ của bạn;)
Cám ơn y Câu trả lời của chúng tôi Gremo;) Tôi không biết về thuộc tính 'property_path'. Và nó hoạt động như một sự quyến rũ. –