Doctrineを利用して実際の処理をしてみるの
( Doctrine )Doctrineいれてみる with zendからの続きです。
では実際にDoctrineで生成されたクラスを利用して データベースの操作を行ってみましょう。
ユーザデータ一覧取得
// user $query = Doctrine_Query::create() ->from('User u') ->orderBy('u.id') ; $lists = $query->execute();
ユーザデータ作成
// user $user = new User(); $user->username = "username" $user->password = "password" $user->save();
ユーザデータ削除
//$user = new User(); $query = Doctrine_Query::create() ->delete("User u") ->whereIn("id", $prms["delid"]); $delcnt = $query->execute();
ユーザデータ変更
// user $user = Doctrine::getTable('User')->find(1); $user->username = "modified_username" $user->password = "modified_password" $user->save();
ちょっと応用してみます。 情報取得時にテーブルをJOINして取得します。
// user and group $query = Doctrine_Query::create() ->from('User u') ->leftJoin('u.Group g') ->orderBy('u.id') ; $lists = $query->execute(); $this->view->lists = $lists;
上記処理は、Doctrine独自の書き方でDoctrine側であらかじめ関連づけしといてカラムと繋ぎ合せて 自動でSQLを作成しています。なのでSQLのなかで勝手に「UserGroup」テーブルがジョインされています。
しかし、この状態だと「UserGroup」テーブルの情報を取りたいとき取得されないみたいだったので 以下にようにして普通に結合させます。
// user and group $query = Doctrine_Query::create() ->from('User u') ->leftJoin('u.UserGroup ug') ->leftJoin('ug.Group g') ->orderBy('u.id') ; $lists = $query->execute(); $this->view->lists = $lists;