MyISAMデータベースでカスケードのUPDATEおよびDELETE効果を実現しようとしています(外部キーを使用してInnoDBテーブルで作成できるのと同様の効果)。2つのサンプルテーブル:
- アルバム
- 写真(アルバムテーブルへの「外部キー」であるalbum_id列があります)
ここで、albumsテーブルの行を削除するときに、Zend_Db_Tableでphotosテーブルの関連するすべての行を自動的に削除したいと思います。これは私がアルバムテーブルに持っているものです:
protected $_name = 'albums';
protected $_dependentTables = array(
'Photos'
);
そして、私は写真の表にこれを持っています:
protected $_name = 'photos';
protected $_referenceMap = array(
'Album' => array(
'columns' => array('album_id'),
'refTableClass' => 'Albums',
'refColumns' => array('id')
)
);
はい、アルバムテーブルの行を削除しても、そのアルバムの写真は削除されません。
これが私がアルバムを削除する方法です:
public function remove($id)
{
$where = $this->getAdapter()->quoteInto('id = ?', $id, 'INTEGER');
return $this->delete($where);
}