Zend_Db

10月 4th, 2007 by Fou Leave a reply »

ちょこっと便利そうな関数のメモ

例 10.18. 自動インクリメントのキーにおける lastInsertId() の使用法

< ?php
$db->insert('bugs', $data);
//自動インクリメントのカラムで最後に生成された値を返します
$id = $db->lastInsertId();

そのテーブルで自動インクリメントの主キーを定義している場合は、 データを追加した後で lastInsertId() メソッドを使用することができます。このメソッドは、 現在のデータベース接続において最後に自動生成された値を返します。

同じく主キー以外は
$id = $db->lastSequenceId('bugs_id_gen');
で取得できる模様

quote() の返り値には、文字列の両端に区切り文字が追加されていることに注意しましょう。 これは、たとえば mysql_real_escape_string()のようなエスケープ用関数の挙動とは異なります。

トランザクション

< ?php
//トランザクションを明示的に開始します
$db->beginTransaction();
try {
     // いくつかクエリを実行します
     $db->query(...);
    $db->query(...);
    $db->query(...);
    // すべて成功したら、トランザクションをコミットして
     // すべての変更を一度に適用します
     $db->commit();
}
catch (Exception $e) {
    // いずれかのクエリが失敗して例外が発生したら、
     // もし他に成功しているクエリがあったとしても
    // それも含めてすべての処理をロールバックします。
    // すべて適用されるか、ひとつも適用されないかのいずれかです。
    $db->rollBack();
   echo $e->getMessage();
}

Zend_Db_Selectオブジェクト

メソッドを使用して句を追加する例

< ?php
// Zend_Db_Select オブジェクトを作成します
$select = $db->select();
// FROM 句を追加します
$select->from( ...テーブルとカラムを指定します... )
// WHERE 句を追加します
$select->where( ...検索条件を指定します... )
// ORDER BY 句を追加します
$select->order( ...ソート条件を指定します... );

また個々の句に対してメソッドが用意されている。
from()
join()
where()
orWhere()
group()
having()
order()
limit()
limitPage()
distinct()
など

< ?php
// できあがるクエリは、このようになります
//   SELECT p."product_id", p."product_name"
//   FROM "products" AS p
//   LIMIT 10, 20
$select = $db->select()
    ->from(array('p' => 'products'), array('product_id', 'product_name'))
    ->limitPage(2, 10);

使いこなせば便利そう・・・使い慣れない間はSQLをそのまま記述したほうが早そう・・・^^;
具体的な使用例は使いながらUPしていくつもり。

Advertisement

コメントを残す