yii2 объединение с несколькими таблицами

#yii2 #jointable

#yii2 #Присоединиться

Вопрос:

я использую kartik gridview и хочу отобразить страницу результатов, используя объединение с несколькими таблицами. ниже я использовал оператор select для извлечения выходных данных, которые мне нужно отобразить на странице индекса (выделены жирным шрифтом) вместо запроса select

 $query = EmpDetails::find()->joinWith(['employeeStatutoryDetail'])
            ->where(['NOT IN', 'emp_statutorydetails.gpa_no', ['']])
            ->orWhere(['IS NOT', 'emp_statutorydetails.gpa_no', NULL]);
  

И мой запрос:

 SELECT A.empcode,A.empname,
       B.designation,
       C.division_name,
       D.gpa_no,D.gpa_sum_insured,
       E.fellow_share
  FROM emp_details AS A JOIN designation 
                   AS B JOIN division 
                   AS C JOIN emp_statutorydetails 
                   AS D JOIN vg_gpa_hierarchy 
                   AS E JOIN vg_gpa_policy 
                   AS F ON F.policy_no=D.gpa_no 
  WHERE D.empid=A.id AND 
        A.designation_id=B.id AND 
        A.division_id=C.id AND 
        E.sum_insured=D.gpa_sum_insured
  

Комментарии:

1. генерирует ли ваш необработанный запрос правильные результаты?

Ответ №1:

К элементам данных модели добавьте дополнительные атрибуты, обозначение, имя_разрешения, gpa_no, gpa_sum_insured и fellow_share. Для поиска и сортировки предлагаю создать расширенную модель EmpDetailsSearch.