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メソッドを使う方法が、予想外の問題が発生しにくいのではないかと思います。