Инструменты пользователя

Инструменты сайта


dev:php:yii:mnozhestvennye.svjazi.pri.ispolzovanii.mysql.isam

====== Множественные связи при использовании БД MySQL и таблиц ISAM ====== В версии **>= Yii 1.0.1** можно использовать //relations// для ISAM без всяких патчей. Версия **Yii 1.0.0**. <code diff> --- framework\db\schema\mysql\CMysqlSchema.php.orig 2008-12-03 22:52:28.000000000 +0300 +++ framework\db\schema\mysql\CMysqlSchema.php 2008-12-30 22:09:44.000000000 +0300 @@ -162,7 +162,7 @@ */ protected function findConstraints($table) { - $row=$this->getDbConnection()->createCommand('SHOW CREATE TABLE '.$table->rawName)->queryRow(); + if( ( $row=$this->getDbConnection()->createCommand('SELECT `constraint` FROM `Constraints` WHERE `table`="'.$table->name.'"')->queryRow() ) === false ) return; $matches=array(); $regexp='/FOREIGN KEY\s+\(([^\)]+)\)\s+REFERENCES\s+([^\(^\s]+)\s*\(([^\)]+)\)/mi'; foreach($row as $sql) </code> После этого создаём таблицу `Constraints` с двумя полями: `table` как Varchar(100) и `constraint` как Text. Соответственно, для каждой записи в поле `table` заносится имя таблицы для связи, в поле `constraint` строка (или несколько строк, или просто несколько записей разделённых, например, пробелом) создания связи вида: <code>[CONSTRAINT ]FOREIGN KEY (<локальное_поле>) REFERENCES <удалённая_таблица>(<удалённое_поле>)</code>

Дискуссия

Enter your comment
 
dev/php/yii/mnozhestvennye.svjazi.pri.ispolzovanii.mysql.isam.txt · Последние изменения: 16.11.2009 17:26 (внешнее изменение)

Инструменты страницы