5

OR 句を使用して Zend db を更新したいと考えています。同等のステートメントは次のとおりです。

UPDATE mail
SET message_read = 1
WHERE id = 5
OR id = 10
4

2 に答える 2

8

を呼び出すと、 (関数 _whereExpr の Zend/Db/Adapter/Abstract.php の 698 行目)を使用してZend_Db_Adapter::update()、複数のWHERE条件が自動的に結合されます。AND

Zend_Db_Expr条件として使用する独自のWHERE条件を作成することで、これを回避できます。条件はそのまま残されます。

例えば:

$where[] = new Zend_Db_Expr(
        $table->getAdapter()->quoteInto('id = ?', 5) . ' OR ' .
        $table->getAdapter()->quoteInto('id = ?', 10)
);

// resulting expression:
//   WHERE (id = 5 OR id = 10)

$table->update($data, $where);

追加の条件がある場合は、.によって条件WHEREと結合されます。ORAND

例:

$where[] = new Zend_Db_Expr(
        $table->getAdapter()->quoteInto('id = ?', 5) . ' OR ' .
        $table->getAdapter()->quoteInto('id = ?', 10)
);
$where[] = $table->getAdapter()->quoteInto('type = ?', 'sometype');

// resulting expression:
//   WHERE (id = 5 OR id = 10) AND (type = 'sometype')
于 2012-06-27T23:30:37.073 に答える
2

->where() はクエリに where 句を追加し、'AND' を配置します。そのために存在する orWhere メソッドがあります。

$select = $this->select();
$select->where('id = 5');
$select->orWhere('id = 10');

$this->fetchAll($select);
于 2012-06-28T12:40:47.147 に答える