База данныхопределения отношения не для первичных столбцов индекса
Yii::app()->db->createCommand()->createTable('ar_table_column', array(
'col_int1' => 'integer NULL',
'col_int2' => 'integer NULL',
'col_int3' => 'integer NULL',
'col_id' => 'pk',
));
Yii::app()->db->createCommand()->createTable('ar_table', array(
'table_int1' => 'integer NULL',
'table_int2' => 'integer NULL',
'table_int3' => 'integer NULL',
'table_id' => 'pk',
));
Yii::app()->db->createCommand()->createIndex('ar_table_idx', 'ar_table',
'table_int1', true);
Мне нужна такая связь - таблица может иметь много столбцов, связанных с ar_table_column.col_int2 = ar_table.table_int1
(не первичным ключом, но обратите внимание, что table_int1
является уникальным). Мне нужно это отношение с точки зрения столбца, то есть мне нужно иметь доступ к таблице из каждого столбца.
Первое испытание:
'table' => array(self::BELONGS_TO, 'ArTable', '',
'on' => 't.col_int2=table.table_int1',),
И это половинной хорошее решение. Есть 2 случая. Во-первых:
$columnInRelation = ArColumn::model()->with('table')->find();
$tableInRelation = $columnInRelation->table;
var_export($tableInRelation->attributes);
и он хорошо работает - я получаю правильный набор атрибутов.
Второй случай:
$columnInRelation = ArColumn::model()->find();
$tableInRelation = $columnInRelation->table;
var_export($tableInRelation->attributes);
и там я получаю ошибку SQL из запроса:
ВЫБРАТЬ table.table_int1 AS t1_c0, table.table_int2 А.С. t1_c1, table.table_int3 А.С. t1_c2, table.table_id AS t1_c3 FROM ar_table table WHERE (t.col_int2 = table.table_int1)
Ошибка очевидна.
Как определить отношение, чтобы оно имелось в обоих случаях - с использованием with()
и не использовать?