数据库结构
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错误:
SELECT 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 table WHERE(t.col_int2 = table.table_int1)
错误很明显。
如何定义关系以使其在两种情况下都可用 - 使用with()
而不使用?
答案 0 :(得分:0)
关系应该根据http://www.yiiframework.com/doc/guide/1.1/en/database.arr
'table' => array(self::BELONGS_TO, 'ArTable', array('col_int2' => 'table_int1')),