我正在尝试使用相关的模型列作为标准之一findAllByAttributes
,但我不断收到CDbException
陈述the column cannot be found
。
这是我的模特关系:
public function relations() {
return array(
'MetaData' => array(self::BELONGS_TO, 'ProjectMeta', 'wbse_or_io'),
);
}
这是我的尝试查询:
$listing = ProjectIndex::model()->with('MetaData')
->findAllByAttributes(array(
'report_date'=>$reportDate,
'MetaData.cost_centre'=>$costCentre
)
);
从我通过Google / StackOverflow /这些论坛阅读的内容,我应该能够引用MetaData关系中的cost_centre列。但我不断收到以下错误:
Table "tbl_project_index" does not have a column named "MetaData.cost_centre"
如何引用相关表格列?
答案 0 :(得分:11)
检查出来
$listing = ProjectIndex::model()->with(
'MetaData'=>array(
'condition'=>'cost_centre = :cost_centre',
'params'=>array('cost_centre'=>$costCentre))
)
->findAllByAttributes(array('report_date'=>$reportDate));
答案 1 :(得分:1)
属性数组中的属性不能用于相关模型。您可以查看findAllByAttributes
的来源以获得更好的解释。但是,除了Alex的答案之外,您还可以将相关属性作为条件字符串或CDbCriteria
数组传递。
$listing = ProjectIndex::model()->with('MetaData')->findAllByAttributes(
array('report_date'=>$reportDate),
'cost_centre = :cost_centre',
array(':cost_centre'=> $costCentre)
);
或者
$listing = ProjectIndex::model()->with('MetaData')->findAllByAttributes(
array('report_date'=>$reportDate),
array(
'condition' =>'cost_centre = :cost_centre',
'params'=>array(':cost_centre'=> $costCentre)
),
);