2017-04-22 35 views
0

我有這樣的代碼計數和加入爾康框架沒有工作

$phql = "SELECT COUNT(a.id) FROM UserParkingIn a JOIN UserVehicle b ON a.userVehicleId = b.id WHERE b.vehicleTypeId = 1"; 
$result = $this->modelsManager->executeQuery($phql); 
echo $result; 

在UserParkingIn表我有例如ID = 10,userVehicleId = 2 在UserVehicle表我有例如ID = 10,userVehicleId = 2,vehicleTypeId = 1

它返回空,但是當我在phpMyAdmin中執行這個查詢時,我使用這個sql邏輯它返回正確的數字。

SELECT COUNT(a.id) FROM user_parking_in a JOIN user_vehicle b ON a.userVehicleId = b.id WHERE b.vehicleTypeId=1; 

,並返回7號

有人能解釋爲什麼這回的錯誤? 謝謝。

+0

我想如果你要使用一個框架,使用它們內置的ORM查詢生成器是有意義的。起初可能有點混亂,但從長遠來看,它使得構建查詢變得更加簡單和容易。我認爲這也更容易調試這些問題。該文檔顯示了一些很好的示例https://docs.phalconphp.com/en/latest/reference/models.html#finding-records –

+0

@JasonJoslin ORM不支持使用JOIN兩個表進行計數,其中條件位於連接表中。 – Faisal

回答

0

我發現解決方案,我用來計數的ID必須設置一個別名,就像這樣的配額。

$query = $this->modelsManager->createQuery("SELECT COUNT(a.id) as quota FROM UserParkingIn a JOIN UserVehicle b ON a.userVehicleId = b.id WHERE a.ospoId = '$ospoId' "); 
      $records = $query->execute(); 
      foreach($records as $record){ 
       $parkingUsed = $record->quota; 
      } 

現在它正在工作。