Zend Framework:如何删除多个事物都属实的表行?

时间:2009-12-04 06:05:21

标签: zend-framework zend-db zend-db-table

通常情况下,这对我有用:

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

但我必须匹配两个ID。所以我真的不知道如何构建它。

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

那么我如何使用Zend Framework做到这一点?

3 个答案:

答案 0 :(得分:58)

延伸Jason W的答案:

  

不完全确定第3部分是什么   正在说

这意味着你可以这样做:

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

适配器将为您报出所有内容。

我觉得文档不是很清楚。

答案 1 :(得分:20)

来自删除()的zend manual

  

如果省略第二个参数,那么   结果就是所有的行   数据库表已删除。

     

如果你提供一个字符串数组   第二个参数,这些字符串是   作为一个术语联合在一起   表达式由AND运算符分隔。

     

如果您提供数组数组   第二个参数,值   将被自动引用到   键。然后将加入这些   作为术语,由AND分开   运算符。

不完全确定第3部分的内容,但第2部分暗示您可以这样做:

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

答案 2 :(得分: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);
    }
}