2015-12-01 3 views
0

я пытаюсь присоединиться к 3 таблицы в моей моделиYii - Объединение нескольких таблиц

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' in 'где clause'. Оператор SQL выполняется было: SELECT COUNT (. DISTINCT tid) ОТ trx_evaluation_detailst LEFT OUTER JOIN trx_evaluationeval о том, где (start_date> = '2015-11-01' AND end_date < (teval_id = evalid.). = '2015-12-01' и project.project_name, как '% sprobe%' и t.employee_id = '120069')

что означает, что он не может видеть project.project_name и таблица rm_projects не стыкуется в возвращенная ошибка.

Как я могу получить доступ к имени_проекта и как я могу присоединиться к таблице rm_projects? прошу помочь.

+1

Я ответил вам в предыдущем вопросе http: // stackoverflow.com/questions/33949387/yii-how-to-get-data-from-another-model/33950665 # 33950665 – SiZE

ответ

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

это присоединяется к модели, имеет соединение, которое проходит через другую модель. Я надеюсь, что этот ответ может помочь любому, у кого есть тот же вопрос, что и я.

0

Я попытался решить вашу проблему в методе поиска() и сделал следующие изменения. Он работает нормально.

$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'"; 
} 

Пожалуйста, дайте мне знать, если вы беспокоитесь об этом.

Спасибо.

+0

hi @AddWeb Solution Pvt Ltd .. к сожалению, я пробовал ваше решение, но оно не сработало .. однако я нашел что-то и я решил эту проблему .. см. мой ответ .. –

Смежные вопросы