Zend_Db_Tableでのinsert方法の違い

Zend_Db_Tableクラスを使った行のinsert方法は2つ。


1. createRow()を使うもの

2. insertメソッドを使うもの

※$tblは、Zend_Db_Table_Abstractを継承したDbアクセスクラスです


1. はこんな感じ


$row = $tbl->createRow();

$row->password = xxx;

$row->create_on = new Zend_Db_Exp(‘now()’);

$row->save();


2. はこんな感じ


$params = array(

 ’password’ => ‘xxxx’,

 ’create_on’ => new Zend_Db_Exp(‘now()’)

);


$tbl->insert($params);


両者の違いは、設定しなかったカラムの処理方法にあります。

値を設定しなかったカラムに対して、1.はnullを設定し、2.は何も処理をしません。


これはどういうことかというと、1.の場合は、DB設定にてdefault値を設定しても、

行をinsertした後には、カラムの値はnullになっているということです。

これは、結構不便に感じます。


1.は更新時と書き方がほぼ一緒なので覚えやすいのですが、上記default値のことを考慮すると、

insertメソッドを使う方法が、予想外の問題が発生しにくいのではないかと思います。