Одно поле этой сущности имеет тип ArrayCollection. На самом деле это связь OneToMany с объектами другого класса.
Итак, немного кода, чтобы было понятнее.
Код: Выделить всё
class User
{
\\...
/**
* @ORM\OneToMany(targetEntity="UserGoods", mappedBy="users")
* @ORM\JoinColumn(name="goods", referencedColumnName="id")
*/
private $goods;
public function __construct()
{
$this->goods = new ArrayCollection();
}
\\...
}
Код: Выделить всё
class UserGoods
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var \DateTime
*
* @ORM\Column(name="inserted_at", type="datetime")
*/
private $insertedAt;
/**
* @var float
*
* @ORM\Column(name="value", type="float")
*/
private $value;
/**
* @ORM\ManyToOne(targetEntity="User", inversedBy="goods")
*/
protected $users;
}
Мне нужно просто поле типа номер, и если объект типа Товар с текущей датой существует, измените его, в противном случае добавьте новый объект в коллекцию.
Это можно было бы легко сделать внутри контроллера, но у меня много экземпляров этой формы, и это сделало бы мою программу невозможно поддерживать.
Есть ли способ добавить постобработку отправленных данных в конструктор форм?
Я уже пробовал использовать DataTransformers, но этого будет недостаточно, так как в лучшем случае они преобразуют число в объект UserGoods, а исходный ArrayCollection не будет сохранен (а как насчет доктринальных ассоциаций?).
Кроме того, если я объявлю тип поля как коллекцию числовых типов, при отрисовке формы будут отображаться все элементы внутри ArrayCollection, а не только последний.
Есть идеи, как из этого выйти?
Заранее благодарим за помощь.
Подробнее здесь: https://stackoverflow.com/questions/263 ... n-symfony2
Мобильная версия