şeklinde oluşturulmalıdır Symfony2'de ek alanla çoktan çoğa ilişkisi olan bir form oluşturmanın en iyi yolunun ne olduğunu merak ediyorum2.Ek alanlar ile çoktan çoğa ilişkisi
Örnek için, kullanıcılar için bir bildirim özelliği oluşturmak istediğimi varsayalım. User
ve Notification
varlıkları var. Ayrıca, varlıklar arasındaki çoktan çoğa ilişkide ek parametreler ekleyebilmek için, üçüncü bir varlık olan UserNotification
'u yarattım. Ekstra parametre, bildirimin kullanıcılar tarafından okunup okunmadığını gösterir. Burada şimdi
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 |
+---------+-----------------+---------+
Tamam bu tür verileri almak mümkün
* @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;
...
}
Bu şekilde nasıl bazı kullanıcılara bir bildirim göndermesine izin bir form yapmak sorunu vardır? Klasik bir çoktan-çoğa ilişkisi ile bir sorun değildi. Ben şu builder
ile NotificationType
vardı:
$builder->add('users', 'entity', array(
'class' => 'User',
'property' => 'name',
'multiple' => 'true',
))
->add('message', 'text');
Ama ara UserNotification
varlık yaratmak zorundaydı çünkü ben bunu nasıl hiçbir fikrim yok. Yardımınız için teşekkür ederiz;)
Teşekkür: bir
InternalMessageFeedback
varlık formu modelinde her kullanıcı ön (sizinUserNotification
aynı) oluşturmak için cevabımız Gremo;) 'property_path' özelliği hakkında farkında değildim. Ve bir çekicilik gibi çalışıyor. –