Symfony2 Ошибка в сгенерированной сущности и ошибка часового пояса в консоли - PullRequest
2 голосов
/ 26 июня 2011

Вчера я попробовал недавно выпущенные генераторы, но столкнулся с проблемой. Я был в состоянии правильно создать базу данных и сущностей. Но как только я попытался создать схему, она показала ошибку вроде:

php app/console doctrine:schema:create

  [Doctrine\Common\Annotations\AnnotationException]                                                    
  [Semantical Error] The annotation "@Table" in class Acme\BlogBundle\Entity\Post was never imported.  

doctrine:schema:create [--dump-sql] [--em[="..."]]

Я, наконец, обнаружил проблему, это было то, что сгенерированная сущность имела аннотации вроде:

/**
* Acme\BlogBundle\Entity\Post
*
* @Table()
* @Entity
*/

вместо:

/**
* Acme\BlogBundle\Entity\Post
*
* @ORM\Table(name="post")
* @ORM\Entity
*/

Мне пришлось добавить имя таблицы в аннотации @Table и ORM \ вручную ко всем аннотациям.

Теперь ошибка изменилась:

php app/console doctrine:schema:create
ATTENTION: This operation should not be executed in a production environment.

Creating database schema...

[Exception] DateTime::__construct(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Calcutta' for 'IST/5.0/no DST' instead.

doctrine:schema:create [--dump-sql] [--em[="..."]]

Как я могу исправить ошибку часового пояса.

и я увидел видео Symfony Interactive Generators , объект по умолчанию генерируется с помощью @ORM \. Только имя таблицы было для ручного добавления. Почему мой дистрибутив генерирует его с некорректными аннотациями.

Ответы [ 3 ]

6 голосов
/ 26 июня 2011

Это проблема PHP в вашей конфигурации, установите часовой пояс

date_default_timezone_set('America/Los_Angeles');

Обычно для консоли есть отдельный файл php.ini.

Запустите php -i | grep "Configuration File" это скажет вам, где находится INI-файл для консоли. Добавьте или измените часовой пояс в этом файле: date.timezone = my/timezone.

Или вы можете добавить date_default_timezone_set() в начало app / AppKernel.php.

4 голосов
/ 18 апреля 2012

Добавьте следующий код в AppKernel.php вверху перед классом файла класса.

date_default_timezone_set('America/New_York');
1 голос
/ 26 июня 2011

неправильная генерация сущности - ошибка, см. https://github.com/symfony/symfony/issues/1440

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...