2017-05-24 3 views
0

Ich habe Abfrage folgende:Wie implementiert man die SQL-Abfrage im yii2-Suchmodell?

 SELECT hs.*FROM hire_screening hs 
     INNER JOIN (SELECT resume_id,MAX(created_date) AS MaxDateTime 
     FROM hire_screening GROUP BY resume_id) hire_screening 
     ON hs.resume_id = hire_screening.resume_id 
     AND hs.created_date = hire_screening.MaxDateTime 

Ich versuchte dies:

$query = HireScreening::find() 
      ->select(["hs.resume_id","MAX(hs.created_date) AS MaxDateTime"]) 
      ->innerJoin('hire_screening as hs','hs.resume_id = hire_screening.resume_id') 

      ->where(['hire_screening.created_date' => 'MaxDateTime']) 
      ->orderBy(['(hs.created_date)' => SORT_DESC]) 
      ->groupBy(['hs.resume_id']); 

Als ich Gruppe verwenden durch das Ergebnis zeigt die ersten Werte jedes ‚resume_id‘ in der Reihenfolge, die in der Tabelle gespeichert. Ich brauche nur die neuesten eindeutigen resume_id 's nach created_date. Wie kann ich diese Abfrage in yii2 Suchmodell implementieren? Bitte helfen Sie.

+1

Bitte aktualisieren Sie die Frage mit Code, den Sie an dieser Stelle versucht haben. Sehen Sie [Wie man fragt] (https://stackoverflow.com/help/how-to-ask) Artikel, um Ihre Frage zu verbessern. Denken Sie daran, dass Stack Overflow nicht Ihr persönlicher Online-Abfragekonverter ist. – Yupik

+0

Tut mir leid. Bin ein Anfänger in Yii2. Entschuldigen Sie bitte einen Fehler. Die Frage ist aktualisiert. – Dijo

Antwort

0

Wenn Sie die rohe SQL-Abfrage ausführen möchten, können Sie CreateCommand-Funktion verwenden. Aber es wird das Array zurückgeben, so dass Sie im Array den Array-Datenprovider verwenden sollten.

$array= Yii::$app->db->createCommand(" 
     SELECT hs.*FROM hire_screening hs 
     INNER JOIN (SELECT resume_id,MAX(created_date) AS MaxDateTime 
     FROM hire_screening GROUP BY resume_id) hire_screening 
     ON hs.resume_id = hire_screening.resume_id 
     AND hs.created_date = hire_screening.MaxDateTime")->queryAll(); 
Verwandte Themen