0
數據庫結構關係定義爲沒有主索引列
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',),
這是一個半很好的解決方案。有兩種情況。第一個:
$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 AS t1_c1,table.table_int3 AS t1_c2,table.table_id AS t1_c3 FROM ar_table表WHERE(t.col_int2 = table.table_int1)
錯誤很明顯。
我應該如何定義關係,使它在兩種情況下都可用 - 使用with()
而不是使用?