Zend_Dbのdeleteでハマった話

最近仕事でZend Frameworkを利用することがあって、そのときハマった内容のメモ。

delete文を実行するため、Zend_Db#delete($sql,
$where)を利用しようとしたのだけど、どうも$whereへ複数指定した場合や主キー以外を指定した場合に上手くいかない。
で、以下のように書いたら解決した。

$where = array(
  $db->quoteInto('key = ?', $key),
  $db->quoteInto('date < ?', $date),
;
$count = $db->delete('table', $where);

ネットで調べると$whereの書き方がいろいろあったけど、この書き方だと上手くいった。



追記。ついでにselectも

$select = $db->select()
  ->from('sp_table', 'count(*) AS cnt')
  ->where('artist = ?', $artist)
  ->where('pub_date >= ?', $pubDate);