我正在尝试在我的模型中加入3个表
trx_evaluation_details
trx_evaluation
rm_projects
trx_evaluation_details
和trx_evaluation
已通过在我的模型中使用关系函数加入。
'eval' => array(self::BELONGS_TO, 'Evaluation', 'eval_id'),
我正在尝试加入rm_projects
表,以便我可以访问该表中的project_name
列,因此我添加了此内容。
'project' => array(self::BELONGS_TO, 'RmProjects', 'project_id'),
所以我在我的模特中有这种关系..
public function relations() {
return array(
'eval' => array(self::BELONGS_TO, 'Evaluation', 'eval_id'),
'project' => array(self::BELONGS_TO, 'RmProjects', 'project_id'),
);
}
我试图像这样访问它..
if ($search_date_end !== '' && $search_date_start !== '' && $search !== '') {
$criteria->condition = "start_date >= '$search_date_start'
AND end_date <= '$search_date_end'
AND project.project_name like '%$search%'
AND t.employee_id = '$employee->company_id'";
}
我尝试了project.project_name ..但是它返回了一个错误
CDbCommand无法执行SQL语句:SQLSTATE [42S22]: 未找到列:1054未知列'project.project_name'在'其中 条款'。执行的SQL语句是:SELECT COUNT(DISTINCT
t
。id
)FROMtrx_evaluation_details
t
LEFT OUTER JOINtrx_evaluation
eval
ON(t
。eval_id
=eval
。id
)WHERE (start_date&gt; ='2015-11-01'AND_date&lt; ='2015-12-01'AND project.project_name喜欢'%sprobe%'和t.employee_id ='120069')
表示它无法看到project.project_name
,并且表rm_projects未在返回的错误中加入。
如何访问project_name以及如何加入rm_projects
表。
请帮忙。
答案 0 :(得分:0)
我试图在Model的search()方法中解决您的问题,并进行了以下更改。它工作正常。
$criteria->with = array('eval', 'project');
if ($search_date_end !== '' && $search_date_start !== '' && $search !== '') {
$criteria->condition = "start_date >= '$search_date_start'
AND end_date <= '$search_date_end'
AND project.project_name like '%$search%'
AND t.employee_id = '$employee->company_id'";
}
如果您对此有任何疑虑,请告诉我。
感谢。
答案 1 :(得分:0)
我已经解决了这个问题。
在我的关系()中,我添加了这一行
'project' => array(self::HAS_ONE, 'RmProjects', array ('project_id'=>'project_id'), 'through'=> 'eval'),
你可以在这里阅读..这是关系查询中使用 http://www.yiiframework.com/doc/guide/1.1/en/database.arr#relational-query-with-through
这会加入具有通过另一个模型的连接的模型。我希望这个答案可以帮助任何与我有同样问题的人。