「基本からしっかり学ぶ Symfony2 入門」メモ(1)

「基本からしっかり学ぶ Symfony2 入門」を買った。

基本からしっかり学ぶ Symfony2入門

基本からしっかり学ぶ Symfony2入門

基本からしっかり学ぶ Symfony2入門:書籍案内|技術評論社

hidenorigoto/symfony2-book: 基本からしっかり学ぶSymfony2入門 サポートサイト

環境について

本書での確認環境は、

とのことだが、そのままやってもつまらないので

を使っている。

4-2 フォームの基本

$this->createFormBuilder()->add('name', 'text')は第二引数にクラス名を渡して->add('name', TextType::class)と書くようになったようだ。

choiceの時の引数が変わったようだ。

            ->add('type', ChoiceType::class, [
                'choices' => [
                    '公演について' => 0,
                    'その他' => 1
                ],

4-3 メール通知機能の作成

app/config/parameters.ymlapp/config/parameters.yml.distの違いは?

Gmailを使うのであれば、2段階認証を無効にした開発用メールアドレスを用意するという方法の他に、アプリケーションパスワードを設定しても良さそうだ。

5-4 BlogArticleの作成

レコードの追加時にエラーが発生した。

INSERT INTO blog_article(title, target_date, content) VALUES
  ('本年もよろしくお願い致します', '2015-1-3', '');
[2016-01-25 20:56:06] [23502] ERROR: 列"id"内のNULL値はNOT NULL制約違反です
  詳細: 失敗した行は(null, 本年もよろしくお願い致します, 2015-01-03, )を含みます

blog_articleテーブル定義で、id列にDEFAULT値が設定されていなかった。Doctrine ORMでは、@GeneratedValueのstrategyにAUTO、SEQUENCE、IDENTITYといったものがあり、PostgreSQLを使う場合はAUTOだとこうなる模様。

http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/basic-mapping.html#identifier-generation-strategies

SEQUENCEにしても良さそうだけど、とりあえずデータの投入方法を以下のようにしてお茶を濁した。

INSERT INTO blog_article(id, title, target_date, content) VALUES
  (nextval('blog_article_id_seq'), '本年もよろしくお願い致します', '2015-1-3', '');