zend framework:如何删除多个为真的表行?

1bqhqjot  于 2021-06-23  发布在  Mysql
关注(0)|答案(3)|浏览(326)

通常情况下,这对我来说是可行的:

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

但我必须匹配两个身份证。所以我真的不知道如何组织它。

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

那么如何使用zend框架来实现这一点呢?

ux6nzvsh

ux6nzvsh1#

延伸jason w的回答:
不太清楚第三部分是怎么说的
这意味着你可以这样做:

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

适配器会为你报价。
不过,我觉得文件不是很清楚。

mlmc2os5

mlmc2os52#

如果您处于扩展类zend\u db\u table\u 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);
    }
}
w7t8yxp5

w7t8yxp53#

从zend手册的delete()中:
如果省略第二个参数,结果是删除数据库表中的所有行。
如果提供一个字符串数组作为第二个参数,则这些字符串将作为表达式中的项连接在一起,并用and运算符分隔。
如果您提供一个数组数组作为第二个参数,那么这些值将自动引用到键中。然后将它们作为术语连接在一起,由和运算符分隔。
不太清楚第三节是怎么说的,但第二节暗示你可以做:

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

相关问题