Intereting Posts
Поле предупреждения PHP HTML при успешной регистрации Каков наилучший способ очистки строки для размещения в URL-адресе, например, имя вопроса на SO? Фиксирование пустой функции PHP Невозможно найти сценарий, перенаправляющий мобильный трафик в собственном веб-сайте WP Как показать цену продажи или обычную цену woocommerce, если нет цены продажи Как безопасно поддерживать постоянное соединение SSH в PHP? проверка проверки на 3 поля для проверки дублирования Каков наилучший способ передачи или доступа к другим объектам в других классах PHP? Есть ли функция для извлечения «столбца» из массива в PHP? Заголовок не будет перенаправлен при передаче через ajax Как запустить из PHP скрипт bash под пользователем root многомерный массив в однослойный массив PHP Как установить драйвер mysqlnd с помощью MAMP? jQuery – вызов ajax каждые 10 секунд .htaccess Параметр PHP 5.3 нарушает параметр Access-Control-Allow-Origin?

Doctrine2 смешивает объекты YAML с ANNOTATION. Черты не работают.

Таким образом, у меня есть несколько объектов, которые используют мой SluggableTrait , который содержит поля name и SluggableTrait вдоль его методов.

 trait SluggableTrait { /** * @var string * @ORM\Column(type="string", length=255, nullable=true) */ private $name; /** * @var string * @ORM\Column(type="string", length=255 * @Gedmo\Slug(fields={"name"}, updatable=false)) */ private $slug; /** * Set name * * @param string $name * * @return SluggableTrait */ public function setName($name) { $this->name = $name; return $this; } /** * Get name * * @return string */ public function getName() { return $this->name; } /** * Set slug * * @param string $slug * * @return SluggableTrait */ public function setSlug($slug) { $this->slug = $slug; return $this; } /** * Get slug * * @return string */ public function getSlug() { return $this->slug; } /** * @return string */ public function __toString() { return $this->getName() ? $this->getName() : 'n/a'; } public function getClassName() { $reflect = new \ReflectionClass($this); return $reflect->getShortName(); } } 

Но всякий раз, когда я пытаюсь использовать его в YAML-сопоставленной сущности, база данных не будет создавать свои поля …

Предположим, у меня есть класс Foo

 class Foo { use SluggableTrait; /** * @var integer */ private $id; /** * Get id * * @return integer */ public function getId() { return $this->id; } } 

С отображением YAML

 Utils\DoctrineBundle\Entity\Foo: type: entity id: id: type: integer generator: strategy: AUTO 

При обновлении моей схемы (даже при создании новой пустой базы данных) моя таблица foo будет иметь только поле id , name и slug не существует.

Все работает отлично, если я использую аннотацию в обоих элементах, в знаке и классе. Если смешанное отображение, не работает.

При использовании сопоставления YAML в моей черте, просто чтобы попробовать, я получаю эту ошибку всякий раз, когда я пытаюсь обновить мою схему

[2015-12-07 13:20:33] app.ERROR: Doctrine \ Common \ Persistence \ Mapping \ MappingException: класс 'Utils \ DoctrineBundle \ Entity \ SluggableTrait' не существует (неперехваченное исключение) в / srv / myapp / vendor /doctrine/common/lib/Doctrine/Common/Persistence/Mapping/MappingException.php line 96 при запуске консольной команды doctrine:schema:update {"exception": "[object] (Doctrine \ Common \ Persistence \ Mapping \ MappingException (код : 0): Класс 'Utils \ DoctrineBundle \ Entity \ SluggableTrait' не существует в /srv/myapp/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/MappingException.php:96) "}

  [Doctrine\Common\Persistence\Mapping\MappingException] 

Класс 'Utils \ DoctrineBundle \ Entity \ SluggableTrait' не существует

doctrine: schema: update [–complete] [-dump-sql] [-f | -force] [-em [EM]]

Я попытался найти пример YAML с чертой без успеха … Поэтому я застрял прямо сейчас.

Ну, после некоторых тестов Doctrine не позволяет смешивать YAML и ANOTTATION без свойств повторного использования, что, очевидно, является тем, что мы хотим избежать использования Trait (и расширения класса)

Я создал PR, чтобы следовать этому https://github.com/doctrine/common/pull/701

Этот PR позволяет использовать YAML отображаемые черты, но не вызывает некоторые события, поэтому ему нужно идти глубже.