26

通常、これは私にとってはうまくいくでしょう:

$db = Zend_Db_Table::getDefaultAdapter();
$where = $db->quoteInto('id = ?', $id);
$db->delete('tablename', $where);

しかし、私は2つのIDを一致させる必要があります。なので、構造がよくわかりません。

WHERE first_id = 'id1' AND second_id = 'id2'

では、Zend Framework でこれを行うにはどうすればよいでしょうか。

4

3 に答える 3

59

ジェイソンWの答えを拡張するには:

3番目のセクションが何を言っているのか正確にはわかりません

それはあなたがこれを行うことができることを意味します:

$db->delete('tablename', array(
    'first_id = ?' => $first_id,
    'second_id = ?' => $second_id
));

そして、アダプターはあなたのためにすべてを引用します。

ただし、ドキュメントが非常に明確であるとは思えません。

于 2009-12-04T08:07:40.640 に答える
20

delete() に関するzend マニュアルから:

2 番目の引数を省略すると、データベース テーブル内のすべての行が削除されます。

2 番目の引数として文字列の配列を指定すると、これらの文字列は AND 演算子で区切られた式の項として結合されます。

配列の配列を 2 番目の引数として指定すると、値は自動的にキーに引用されます。これらは、AND 演算子で区切られた用語として結合されます。

3番目のセクションが何を言っているのか正確にはわかりませんが、2番目はあなたができることを意味します:

$where = array();
$where[] = $db->quoteInto('first_id = ?', $first_id);
$where[] = $db->quoteInto('second_id = ?', $second_id);
$db->delete('tablename', $where);
于 2009-12-04T06:32:18.190 に答える
1

クラス Zend_Db_Table_Abstract を拡張しているモデルを使用している場合は、別の構造を使用する必要があります。

class Yourmodel extends Zend_Db_Table_Abstract {
    protected $_name = 'tablename';
    protected $_primary = 'primarykey';
    public function remove($first_id, $second_id) {
        $where = array();
        $where[] = $this->getAdapter()->quoteInto('first_id = ?', $first_id);
        $where[] = $this->getAdapter()->quoteInto('second_id = ?', $second_id);
        $this->delete($where);
    }
}
于 2013-09-03T09:58:50.633 に答える