我有 2 个表:生产和 *production_summary*。生产存储有关每个生产、销售或丢弃的产品的数据。*production_summary* 存储有关生产的每日摘要。这是相关的数据库结构:
CREATE TABLE `production` (
`id` int(10) unsigned NOT NULL auto_increment,
`created` date NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `production_summary` (
`id` int(10) unsigned NOT NULL auto_increment,
`date` date NOT NULL,
`summary` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
模型由 Gii 生成,名称分别为:Production和ProductionSummary。
我这样定义关系:
class Production extends CActiveRecord
{
...
public function relations()
{
return array(
'summary' => array(self::HAS_ONE, 'ProductionSummary', '', 'on' => 'summary.date = t.created' ),
);
}
...
}
当我得到模型时它工作正常:
$model = Production::model()->with( 'summary' )->findByPk($id);
但是延迟加载失败: unknown column t.created。我明白了:Yii 在延迟加载时不会加入表,只是查询ProductionSummary表。
在我的情况下使用with()
不是问题,但开始想知道定义这种关系的正确方法是什么?