Pasar código MySQL a generador de consultas de Yii2

Hola buenos días soy nuevo con Yii2 y estoy tratando de recrear la consulta que hice en phpMyAdmin. Ya trate de varias formas pero no manda nada o da errores, el último intento fue con subconsultas pero manda error 500.

Este es el código en MySQL que sale bien:


SELECT DISTINCT CONCAT(c.NOMBRE,' ',c.APELLIDO_PATERNO,' ',c.APELLIDO_MATERNO) AS NOMBRE_CANDIDATO

    FROM tbl_candidatos c

    LEFT JOIN (SELECT  FK_CANDIDATO, count(PK_VACANTES_CANDIDATOS) AS Num_Vacantes 

               	FROM tbl_vacantes_candidatos

                	GROUP BY FK_CANDIDATO) nc 

        			ON nc.FK_CANDIDATO = c.PK_CANDIDATO

   				WHERE NOT EXISTS(SELECT 1 FROM tbl_vacantes_candidatos

                WHERE FK_VACANTE = 164

                AND FK_CANDIDATO = nc.FK_CANDIDATO);

Y esto es hasta donde me quede en el controller pero da error:


$subQuery = (new \yii\db\Query())

         ->select([

         'FK_CANDIDATO',

         'COUNT(PK_VACANTES_CANDIDATOS)'

         ])

         ->from('tbl_vacantes_candidatos')

         ->groupBy('FK_CANDIDATO')

         ->all();


      $dataProvider2 = (new \yii\db\Query())

         ->select([

         'CONCAT(c.NOMBRE," ", c.APELLIDO_PATERNO, " ",c.APELLIDO_MATERNO) AS NOMBRE'

         ])

         ->from('tbl_candidatos as c')

         ->leftJoin(['nc' => $subQuery], 'nc.FK_CANDIDATO = c.PK_CANDIDATO')

         ->distinct()

         ->all();

¿Alguien me puede enseñar como hacerlo bien?

En la barra de debug puedes ver la query generada y contrastarla.

Otra opción sería forzar la salida de la query de la siguiente forma.


$dataProvider2->createCommand()->getRawSql

.

No obstante veo un problema de nombres en tu código. Estás llamando a la query "dataProvider", sin embargo no es ese tipo de objeto. Un data provider se estructura así:


 

new ActiveDataProvider([

   'query'=>$tuObjetoQuery

]);