Normally, this would work for me:
$db = Zend_Db_Table::getDefaultAdapter();
$where = $db->quoteInto('id = ?', $id);
$db->delete('tablename', $where);
but I have to match two ids. So I don't really know how to structure it.
WHERE first_id = 'id1' AND second_id = 'id2'
So how do I do this with the Zend Framework?
To extend on Jason W's answer:
Not exactly sure what the 3rd section
is saying
That means you can do this:
$db->delete('tablename', array(
'first_id = ?' => $first_id,
'second_id = ?' => $second_id
));
And the adapter will quote everything for you.
I don't feel like the documentation is very clear though.
From the zend manual on delete():
If you omit the second argument, the
result is that all rows in the
database table are deleted.
If you provide an array of strings as
the second argument, these strings are
joined together as terms in an
expression separated by AND operators.
If you provide an array of arrays as
the second argument, the the values
will be automatically quoted into the
keys. These will then be joined
together as terms, seperated by AND
operators.
Not exactly sure what the 3rd section is saying, but the 2nd implies that you can do:
$where = array();
$where[] = $db->quoteInto('first_id = ?', $first_id);
$where[] = $db->quoteInto('second_id = ?', $second_id);
$db->delete('tablename', $where);
If you're in model which is extending class Zend_Db_Table_Abstract, you need to use different structure:
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);
}
}