Zend_Db_Tableを使って新しい行を書き込み

4月 29th, 2009 by Fou Leave a reply »

Zend_Db_Tableを使って新しいフィールドを追加するときcreateRow()メソッドを使ってsave()する方法と単純にinsert()する二つの方法があります。

それぞれの使い方は

$table = new Table();
$newRow = $table->createRow();
$newRow->name = 'hoge';
$newRow->udate = new Zend_Db_Expr('now()');
$newRow->save();
$table = new Table();
$data = array(
  'name' => 'hoge',
  'udate' => new Zend_Db_Expr('now()')
);
$table->insert($data);

createRow()を使った書き方は更新作業などと同じ方法なので、登録も更新も同じルーチンで組みたいときなどに便利かもしれませんが、ほとんどの場合は別々に組んでいるのではないかと思うのでこれは抜いて考える。

実際使ってみるとそれぞれ微妙な特徴があって
createRow()経由は
$nowRowにたいして、存在しないフィールドを入れてもエラーにならない。
Zend_Formと組み合わせた場合など、inputボタン属性がくっついてきてもそのまま使えるのが便利。
ただし、DBのデフォルト設定を上書きしてしまうので、注意する必要があり。

insert()は
存在しないフィールドを指定するとエラーになる。
なのでZend_Formと組み合わせた場合など、inputボタン属性をunsetして使っている(他にいい方法があったら教えてw)。

結局どちらを優先して使おうか、非常に悩む。。
結論が出ないが、ケースバイケースになるのかな・・?

Advertisement

コメントをどうぞ