Zend Frameworkで多対多のテーブルをMyISAMなどリレーション無しで扱う場合

Zend Frameworkで多対多のテーブルをリレーション無しで扱う。:: PHPの種 ブログ

つまり強制MyISAMのさくらレンサバでは。。
$_dependentTablesを指定しましょう。

で、ある程度Zend_Db_Tableで保管ができるので、それを利用させてもらいましょう。

[php]
class BugsProducts extends Zend_Db_Table_Abstract
{
protected $_name = ‘BugsProducts’;
protected $_referenceMap = array(
‘Bug’ => array(
‘columns’ => ‘bug_id’,
‘refTableClass’ => ‘Bugs’,
‘refColumns’ => ‘id’,
‘onDelete’ => self::CASCADE,
‘onUpdate’ => self::CASCADE
),
‘Product’ => array(
‘columns’ => ‘product_id’,
‘refTableClass’ => ‘Products’,
‘refColumns’ => ‘id’,
‘onDelete’ => self::CASCADE,
‘onUpdate’ => self::CASCADE
)
);
}
[/php]

んで、リファレンスを貼られたほうのテーブルで

[php]
class Products extends Zend_Db_Table_Abstract
{
protected $_name = ‘products’;
protected $_dependentTables = array(‘BugsProducts’);
}
[/php]

DependetTablesをクラス名で指定しておきます。

これでDeleteがCascadeされたりなど、Zend_Db_Table側でリレーションを保管してくれます。
そもそもInnoDBが使えればいいんですけどねえ。。

タイトルとURLをコピーしました