Hi,

I have two tables, drivers and cars.
Each driver in drivers has his cars in cars.

When I delete a driver, his cars should also be deleted in cars.

I defined two classes:

class Drivers extends Zend_Db_Table_Abstract
{
    [...]
    protected $_dependentTables = array(
        'Cars'
    );
}

class Cars extends Zend_Db_Table_Abstract
{
    [...]
    protected $_referenceMap = array(
        'Pages' => array(
            'columns'       => array('driver_id'),
            'refTableClass' => 'Drivers',
            'refColumns'    => 'id',
            'onDelete'      => self::CASCADE
        )
    );
}

When I run

$myTable = new Drivers();
$driversRowset = $myTable ->find(1278);
$driver = $driversRowset->current();

$driver->delete();

The row with id 1278 in my drivers table will be deleted and also all rows
in cars, where driver_id = 1278. Everything is working as expected.

Now I want to add a method to my drivers Zend_Db_Table class, which will
delete a driver and do something else:

class Drivers extends Zend_Db_Table_Abstract
{
    [...]
    public function doSth($id)
    {
        $where = $this->_db->quoteInto('id = ?', $id, Zend_Db::INT_TYPE);
        $this->delete($where);

        // do my other stuff
        [...]
    }
}

My problem is, that when I call $driverTable->doSth(1278), the row in the
driver's table will be deleted, but it won't delete any rows in cars.

Did I miss something?


-- 
Regards,
Thomas


Reply via email to