2014-07-16 57 views
1

我有這個語法上我的控制器Yii的查詢生成器結果(平原SQL和加入和子查詢)

$checkbook = Yii::app()->db->createCommand("SELECT count(b.bookingid) as booking FROM (SELECT :fname AS firstname, :mname AS middlename, :lname AS lastname, :dob AS dob) n 
                LEFT JOIN passenger p ON (p.firstname=n.firstname AND p.middlename=n.middlename AND p.lastname=n.lastname AND p.dob=n.dob) 
                LEFT JOIN pax USING (passengerid) 
                LEFT JOIN booking b USING (bookingid) 
                LEFT JOIN journey USING (bookingid) 
                LEFT JOIN flight f USING (flightid) 
                WHERE f.origin = :origin AND f.destination = :destination AND f.departure BETWEEN :datestart AND :dateend"); 
     $checkbook->bindValue(":fname", $fname); 
     $checkbook->bindValue(":mname", $mname); 
     $checkbook->bindValue(":lname", $lname); 
     $checkbook->bindValue(":dob", $dob); 
     $checkbook->bindValue(":origin", $origin); 
     $checkbook->bindValue(":destination", $destination); 
     $checkbook->bindValue(":datestart", $datestart); 
     $checkbook->bindValue(":dateend", $dateend); 
     $checkbook->queryRow(); 

     //If Count Result 1, then Status True. If Count Result more than 1,then false. 
     if ($checkbook['booking'] == 1) { 
      $status = true; 
     } else { 
      $this->actionDoubleBook(); 
      $status = false; 
      return $status; 
     } 

但我得到這個錯誤。

Fatal error: Cannot use object of type CDbCommand as array in /home/apihost/public_html/goflight/protected/controllers/BookingController.php on line 653 

任何想法?以及如何用SQL語法制作一個好的查詢生成器。

+0

'$ checkbook'變量包含CDbCommand對象。並且您嘗試使用此變量訪問查詢結果。 – Phantom

回答

1

你必須使用結果.. queryRow()不會改變查詢對象本身,但返回結果。因此,使用這種

$result = $checkbook->queryRow(); 

然後

if ($result['booking'] == 1) { 
      $status = true; 
     } else { 
      $this->actionDoubleBook(); 
      $status = false; 
      return $status; 
     } 
+0

謝謝,它是工作人員。如何愚蠢IAM我只是犯了一個小錯誤 – ramayeah

+0

碰巧每個人都在一段時間:) – Manquer