2011-06-26 3 views
2

最近リリースされたジェネレータを昨日試しましたが、問題が発生しました。データベース&のエンティティを正しく作成できました。Symfony2コンソールで生成されたエンティティとタイムゾーンエラーのエラー

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

の代わり:

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 
* 
* @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 videoを見ましたが、エンティティはデフォルトで@ORM \で生成されています。手動で追加するのはテーブル名だけでした。私のディストリビューションが間違った注釈でそれを生成したのはなぜですか?

答えて

6

これはあなたの設定でPHPの問題はコンソール用に別のphp.iniファイルは通常あり、あなたのtimezone

date_default_timezone_set('America/Los_Angeles'); 

を設定しています。

実行php -i | grep "Configuration File"これは、コンソールのiniファイルの場所を示します。そのファイルのタイムゾーンを追加または編集します:date.timezone = my/timezone

また、date_default_timezone_set()をapp/AppKernel.phpの先頭に追加することもできます。

+0

ええ、どこですか。 Symfony2のどこにでもこの設定がありません。php.iniにはすでに値が設定されています。 – Aayush

+0

@Aayush:私はSf2を数週間使っていないので、何か変わったかもしれませんが、 'date_default_timezone_set()'をブートストラップファイルに入れることができます。通常は 'PROJECT_ROOT/bootstrap.php'です。 – Crozin

+0

ありがとうございました。私がSymfony2で何か起こったのを見たのは初めてです。これはすばらしいことですが、今私は動機付けられています。それはスキーマとテーブルを生成しました。どうもありがとう。 @Crozin:AppKernel.phpの一番上に置くと機能しました。あなたの答えをありがとう。 私はまだ1つの質問を持っています:なぜコンソールジェネレータはエンティティを間違って生成しましたか? – Aayush

1

間違ったエンティティの生成は、バグでhttps://github.com/symfony/symfony/issues/1440

+0

これを修正する方法を見つけました。私はそれがFabPotによって修正されたことを意味します:https://github.com/sensio/SensioGeneratorBundle/commit/26e7dbf01adc1f6fc00cf4554eee17a93c761849 – Aayush

+0

あなたは私に感謝しました! – Aayush

4

は、クラスファイルのクラスの前に先頭にAppKernel.phpに次のコードを追加するを参照してください。

date_default_timezone_set('America/New_York');