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;
