この場合、ZEND を使用して mySQL ステートメントを適切に記述する方法を知りたいです。
SELECT * FROM `users` WHERE role_id = 2 AND status = 2 AND bddate BETWEEN '1988-05-07' AND '1991-01-01' ORDER BY lastname DESC
たとえば、ifステートメントがあります。フィルター ユーザーが role_id を選択した場合、それを WHERE などに含めます。残りの部分も同様です。
これまでのところ、1 つの WHERE 条件があり、次のように実行しました (今はもっと複雑な条件が必要です)。
$select = $this->select()
->setIntegrityCheck(false)
->from(array('u'=>'users'))
->join(array('r'=>'user_roles'), 'u.role_id = r.role_id', array('role'=>'title'));
if(count($filters) > 0) {
foreach($filters as $field => $filter) {
$select->where($field . ' = ?', $filter);
}
}
if(null != $sortField) {
$select->order($sortField);
}