For Want Of A Better Word

symfony1.4の勉強②テーブルからモデルからWEB画面(CRUD)の生成メモ

      2015/04/18

http://symfony.com/legacy/doc/jobeet/1_4/ja/03?orm=Propel
symfony1.4 3日目データモデル。

①モデルスキーマを書く
(サンプル参照)
ここではschema.ymlから生成するぱたーん。
[補足:スキーマ記述のルール]

type: カラムの型 (boolean、tinyint、smallint、integer、bigint、double、float、real、decimal、char、varchar(size)、longvarchar、date、time、timestamp、blob および clob)
required: カラムを必須にしたい場合は true にセットする
index|データベースインデックス~: カラム用にインデックスを作りたい場合は true にセットする。カラムでユニークインデックスを作りたい場合は unique にセットする
primaryKey: カラムをテーブル用の主キーとして定義する
foreignTable、foreignReference: 別のテーブルへの外部キーとしてカラムを定義する

サンプル

jobeet_affiliate:
id: ~
url:{ type: varchar(255), required: true }
email:{ type: varchar(255), required: true, index: unique }
token:{ type: varchar(255), required: true }
is_active:{ type: boolean, required: true, default: 0 }
created_at:

[補足:テーブルがある状態でスキーマファイルを作成するコマンド]
php symfony propel:build-schema

②テーブルの作成
(※schema.ymlを作成している前提。)

SQLファイルの作成

php symfony propel:build –sql

SQLの実行

php symfony propel:insert-sql

モデルファイルの生成

php symfony propel:build –model

[補足:生成されるモデルファイルの種類]

# model直下に生成/
テーブル名: このクラスのオブジェクトは jobeet_job テーブルの単独のレコードを表します。デフォルトではこのクラスは空です。
テーブル名Peer: このクラスでは、JobeetJob オブジェクトのコレクションを返すスタティックメソッドなどを定義します。デフォルトではこのクラスは空です。

# model/omに生成
Baseテーブル名: JobeetJob の親クラス。propel:build –model を実行するたびにこのクラスは上書きされるので、すべてのカスタマイズは JobeetJob クラスで行わなければなりません。
Baseテーブル名Peer: JobeetJobPeer の親クラス。propel:build –model を実行するたびにこのクラスは上書きされるので、カスタマイズは JobeetJobPeer クラスで行わなければなりません。

※原則Baseは修正しない。

★データの投入について
“symfony がデータベースのテーブルを作成するたびに、すべてのデータは失われます。”
何たる。。
sqlでINSERT文を用意しておくなどの対策が必要だが。。

・fixturesにymlファイルを作成。propel:data-loadコマンドからymlファイルのデータをロードできます。

ファイル名に番号をつけるのはload自の実行順序の制御のため、手動で番号を追加してあげれば挿入や追加にも対応

■閲覧画面の自動生成

php symfony propel:generate-module –with-show –non-verbose-templates frontend job JobeetJob
~~~~~~~~ ~~~ ~~~~~~~~~
①② ③

①アプリケーション名
②モジュール名
③アクション名<オプションは下記参照>
http://symfony.com/legacy/doc/reference/1_4/ja/16-Tasks

-with-show ==>show メソッドを作成
-non-verbose-templates ==>冗長ではないテンプレートを生成

上記コマンドを実行すると、はいここでエラーが発生

PHP Fatal error:Class ‘JobeetJobForm’ not found in /var/www/sfprojects/jobeet/lib/vendor/symfony/lib/generator/sfModelGenerator.class.php on line 331

対策してくれいてるのが下記ページ
http://d.hatena.ne.jp/s_kaneda/20090403/1238754065

マネする。

php ./symfony propel:build-forms
php ./symfony propel:generate-module –with-show –non-verbose-templates frontend job JobeetJob

成功。

http://192.168.208.130:8080/frontend_dev.php/job

にアクセス

f:id:fz6:20140502154455p:plain
OK

f:id:fz6:20140502154504p:plain
OK

f:id:fz6:20140502154508p:plain
あれ!!!?

本日は終了

 - 未分類

  関連記事

no image
【CentOS】英語キーボードで「:」(コロン) と 「=」(イコール)

centosの仮想環境を使っていると、キーボードの入力が英語になっていて、vim …

no image
欲しい画像がいっぱい

ドキュメントやWEBサイト作成に便利 The Noun Project http …

no image
Monacaにリトライ

だいぶ前に触って、それっきりになっていた。モバイルアプリ開発。 入門にあたりダン …

no image
[windows][office]游ゴシックを使わない…

游ゴシックがへなへなで気に入らない。なので使わないようにしたい。 excelとか …

no image
libeditとは

readlineというCLI入力補助ライブラリ互換を目指して作られているライブラ …