2010年7月25日日曜日

[PHP][Symfony][Doctrine]: DoctrineでIDをキーにレコードを取り出す

いくつかの案件でSymfony 1.4+Doctrineを使ってみて大体勝手が分かってきたので,メモ.

Doctrineで以下のテーブルがあったとする.

BlogPost:
columns:
title:
type: string(255)
body:
type: string()
この場合,自動的にidというフィールドが追加され,作られるテーブルは以下の通りになる(MySQL使用時).

mysql> show fields from blog_post;
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | bigint(20) | NO | PRI | NULL | auto_increment |
| title | varchar(255) | YES | | NULL | |
| body | text | YES | | NULL | |
+-------+--------------+------+-----+---------+----------------+
ここで,IDを指定して1レコードだけ引っ張ってくる方法にはいくつかある.


$q = Doctrine_Query::create()
->from('BlogPost bp')
->where('bp.id = ?', $id);
$records = $q->execute();
if(count($records) > 0){
$record = $records[0];
}


$q = Doctrine_Query::create()
->from('BlogPost bp')
->where('bp.id = ?', $id);
$record = $q->fetchOne();


$record = Doctrine::getTable('BlogPost')->find($id);

最初の方法ではlimit文が付かないので,その分遅くなる.後の二つは発行されるSQLも同じ.
最後の方法は非常に手軽なので,覚えておくと楽.

0 件のコメント:

コメントを投稿