В Symfony2 я просто недавно пытался мыслить в терминах черт характера, чтобы создать какое-то поведение.
Допустим, у меня есть атрибут адреса в сущности. Я экстернализировал атрибуты, геттеры и сеттеры, связанные с этим в AddressableTrait.
Но что, если адрес станет сущностью? Я начал пытаться определить мое отношение OneToMany в моей черте, как если бы оно было в обычной сущности:
use Doctrine\ORM\Mapping as ORM;
class AddressableTrait {
/**
* @var
* @ORM\OneToMany(targetEntity="XXXX\GlobalBundle\Entity\Address", inversedBy="What to put here" )
*/
protected $addresses;
/**
* @return ArrayCollection
*/
public function getAddresses()
{
return $this->addresses;
}
/**
* @param ArrayCollection $addresses
*/
public function setAddresses($addresses)
{
$this->addresses = $addresses;
}
}
Что положить в перевернутый? Цель этой черты в том, чтобы точно внедрить все функции поведения, поэтому я думаю, что хотя бы с использованием традиционной аннотации / YML / XML этого добиться невозможно.
Я немного покопался в ней и нашел это очень интересная ссылка кажется, что это позволяет вам определять отношения через события, но есть еще логика, которую нужно добавить к «завершающим» отношениям.
ОБНОВИТЬ :
Используя вышеуказанную ссылку, мне удалось создать динамическое отношение ManyToMany. обновление схемы работает при создании, но если я прокомментирую динамическое отношение, схема: update —dump-sql не удалит его. Вроде работает надстройка только. Любой ключ к тому, чтобы заставить динамическое отображение придерживаться добавления / удаления реальных отношений?
Большое спасибо за ваши ответы!
никола
Я столкнулся с проблемой использования черт в сущностях. Для обычных значений базы данных (скаляр, DateTime) черты работали нормально, но когда я попытался определить отношения сущностей в чертах, пакет миграции доктрины преобразовал бы свойство в поле varchar.
Единственный способ найти правильные свойства отношения сущностей, который я смог найти, — это переместить их из свойства в сам класс сущностей.
Других решений пока нет …