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

And*_*rew 24 zend-framework zend-db-table zend-db

通常,这对我有用:

$db = Zend_Db_Table::getDefaultAdapter();
$where = $db->quoteInto('id = ?', $id);
$db->delete('tablename', $where);
Run Code Online (Sandbox Code Playgroud)

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

WHERE first_id = 'id1' AND second_id = 'id2'
Run Code Online (Sandbox Code Playgroud)

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

sma*_*007 58

延伸Jason W的答案:

不完全确定第3部分的内容

这意味着你可以这样做:

$db->delete('tablename', array(
    'first_id = ?' => $first_id,
    'second_id = ?' => $second_id
));
Run Code Online (Sandbox Code Playgroud)

适配器将为您引用一切.

我不觉得文档很清楚.

  • 一个API迫使您对其进行反向工程以执行简单的操作,这是一个糟糕的API. (23认同)

小智 20

从删除()的zend手册:

如果省略第二个参数,则结果是删除了数据库表中的所有行.

如果提供一个字符串数组作为第二个参数,则这些字符串将作为由AND运算符分隔的表达式中的术语连接在一起.

如果您提供数组数组作为第二个参数,则值将自动引用到键中.这些将作为术语连接在一起,由AND运算符分隔.

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

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