【问题标题】:Yii - Joining multiple tablesYii - 连接多个表
【发布时间】:2016-03-05 05:25:04
【问题描述】:

我正在尝试在我的模型中加入 3 个表

trx_evaluation_details

trx_evaluation

rm_projects

trx_evaluation_detailstrx_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' 在 'where 条款'。执行的 SQL 语句是:SELECT COUNT(DISTINCT t.id) FROM trx_evaluation_details t 左外连接 trx_evaluation eval ON (t.eval_id=eval.id) 在哪里 (start_date >= '2015-11-01' AND end_date

这意味着它看不到project.project_name,并且返回的错误中没有加入表rm_projects。

如何访问 project_name 以及如何加入 rm_projects 表。? 请帮忙。

【问题讨论】:

标签: php mysql sql-server join yii


【解决方案1】:

我已尝试在模型的 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'"; 
}

如果您对此有任何疑问,请告诉我。

谢谢。

【讨论】:

  • hi @AddWeb Solution Pvt Ltd.. 不幸的是,我尝试了您的解决方案,但没有奏效.. 但是我找到了一些东西,我已经解决了这个问题.. 请看我的回答..
【解决方案2】:

我已经解决了这个问题。

在我的关系()中,我添加了这一行

'project' => array(self::HAS_ONE, 'RmProjects', array ('project_id'=>'project_id'), 'through'=> 'eval'),

你可以在这里阅读它。它在关系查询中使用 through http://www.yiiframework.com/doc/guide/1.1/en/database.arr#relational-query-with-through

这将连接具有通过另一个模型的连接的模型。我希望这个答案可以帮助任何和我有同样问题的人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-31
    相关资源
    最近更新 更多