Ich frage mich, was ist der beste Weg, um ein Formular erstellen, die eine Viele-zu-viele-Beziehung mit zusätzlichen Feld in Symfony2 behandeln.Rendern einer Viele-zu-Viele-Beziehung mit zusätzlichen Feldern in ein Formular
Für das Beispiel sagen wir, ich möchte eine Benachrichtigungsfunktion für Benutzer erstellen. Ich habe die User
und die Notification
Entitäten. Um zusätzliche Parameter in der Viele-zu-Viele-Beziehung zwischen Entitäten hinzufügen zu können, habe ich eine dritte Entität UserNotification
erstellt. Der zusätzliche Parameter zeigt an, ob die Benachrichtigung von den Benutzern gelesen wurde oder nicht.
* @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;
...
}
So kann ich bin in der Lage, diese Art von Daten jetzt
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 hier zu bekommen, ist das Problem, wie ein Formular zu machen, die eine Benachrichtigung für einige Benutzer senden lassen? Mit einer klassischen Viele-zu-Viele-Beziehung war das kein Problem. Ich hatte ein NotificationType
mit folgenden builder
:
$builder->add('users', 'entity', array(
'class' => 'User',
'property' => 'name',
'multiple' => 'true',
))
->add('message', 'text');
Aber da ich die Zwischen UserNotification
Einheit zu schaffen hatte, ich habe keine Ahnung, wie es zu tun. Danke für deine Hilfe;)
Vielen Dank für y: eine
InternalMessageFeedback
Entität (das gleiche wie IhrUserNotification
) Vordergrund jeden Benutzer in Form Modell zu erstellen unsere Antwort Gremo;) Ich war mir der Eigenschaft 'property_path' nicht bewusst. Und es funktioniert wie ein Zauber. –