symfony2の余分なフィールドと多対多の関係を処理するフォームを作成するにはどうすればよいでしょうか。余分なフィールドを持つ多対多の関係をフォームにレンダリングする
たとえば、ユーザーに通知機能を作成したいとします。私はUser
とNotification
エンティティを持っています。エンティティ間の多対多の関係で余分なパラメータを追加できるようにするために、私は第3のエンティティUserNotification
を作成しました。余分なパラメータは、通知がユーザによって読み取られたかどうかを示します。
* @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;
...
}
私は今ここでこの種のデータ
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]を取得することができています。この方法では、一部のユーザーに通知を送信できるようにフォームを作成する方法、問題ありますか?古典的な多対多の関係では、それは問題ではありませんでした。私は、次のbuilder
とNotificationType
を持っていた:
$builder->add('users', 'entity', array(
'class' => 'User',
'property' => 'name',
'multiple' => 'true',
))
->add('message', 'text');
しかし、私は中間UserNotification
エンティティを作成しなければならなかったため、私はそれを行うにはどのようには考えています。あなたの助けをありがとう;)
感謝を:1つの
InternalMessageFeedback
エンティティフォームモデル内の各ユーザーフォア(あなたUserNotification
と同じ)を作成します私たちの答えはGremo;)私は 'property_path'プロパティを知らなかった。そして、それは魅力のように働いています。 –