Symfonyでの項目追加

ふと項目の追加とかページの追加作業を行っている時に、別のタスクを処理してどこまでやってたかを時々忘れてしまうとっくんです。
こんばんは。
今回は項目追加について少しだけ。
そして、びみょーに動作が人によって違うかもしれません。ご了承下さいましー。


今回も完全にSymfony周辺をいじくる覚書です。
とりあえずDBにカラムを追加

ALTER TABLE customers ADD COLUMN hogehoge varchar(255)  AFTER hoge;
//テーブルcustomersのカラムhogeの後に、hogehogeというカラムを追加


そこからコマンドラインでschema.ymlを生成すればOK
symfony doctrine:build-schema
・・・のはずが今日はここでエラーが出た。
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right syntax to use near 'order' at line 1.
Failing Query: "DESCRIBE order"
おお・・・?なんぞや?と思ったら「order」って予約語じゃねーかバーロー


予約語に関しては以下の公式リファレンスをご確認ください。

8.3. MySQLでの予約語の扱い
意外にもCONVERTとかはOKだったりする。

此方のページでも予約語についていろいろ書かれてますのでよろしければどうぞ。

MySQLで使ってはいけないワード一覧 – Layer8



一応・・・出来ないことはないけど、後々バグの温床になるのはねげれなので、大人しくテーブル名を変更する。
ALTER TABLE `order` RENAME TO orders;
//シングルクウォートで囲むと予約語をカラム扱いしてくれる
上はあくまで一例ですが、シングルクウォートで囲んでやれば問題なくSQLが通ります。
ほいリネーム完了!そして難なくschemaの生成に成功。


次にDoctrine先生にModel部分を自動生成してもらいましょう。同じくコマンドラインで操作です。
symfony doctrine:build-model
これで見事、MyProject>model>form>doctrine>baseのディレクトリに自動生成されるBaseHuga.classが生成されました。
あとは、それをオーバーライドする子クラスを一つ上の階層MyProject>model>form>doctrineにHuga.Classを作成してやればOKですたい。



ついでにModuleも作成しちゃいましょうかね。コマンドライン操作です。
symfony generate:module frontend huga
これで無事、ほぼまっさらなhugaというページが生成されました。
※正確にはtempletes>indexSuccess.php(View側)とactions>actions.class(Controller)が生成されます。




大体そんな感じ。
ギャグ漫画日和┫・∀・┣
そして改行プラグインいれなめっちゃ見づらいやんけ。


  1. コメントはまだありません。

  1. トラックバックはまだありません。