web-dev-qa-db-ja.com

Zend Framework:複数のことが当てはまるテーブル行を削除する方法は?

通常、これは私にとってはうまくいきます:

$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でこれをどのように行うのですか?

24
Andrew

Jason Wの答えをさらに詳しく説明します。

3番目のセクションの内容がよくわからない

つまり、これを行うことができます:

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

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

ドキュメントが非常に明確であるように私は感じていません。

58
smack0007

Delete()の zend manual から:

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);
20
Justin W

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);
    }
}
1
sanneo