2015-06-22 56 views
0

我正在使用sqldataprovider,並且我正在對一個非對象錯誤的成員函數getCount()進行調用。我不知道我做錯了什麼。下面是我的控制器代碼獲取錯誤調用一個非對象的成員函數getCount()

public function actionTicketbookingreport() 
    { 
    $count = Yii::$app->db->createCommand(' 
       SELECT COUNT(*) FROM screen_ticket_booking_history WHERE  status=:status 
      ', [':status' => 0])->queryScalar(); 
      $dataProvider = new SqlDataProvider([ 
       'sql' => 'SELECT A1.booking_id As Booking_id, 
         A1.booking_date As Booking_date, 
         A2.movie_name As Movie, 
         A3.theatre_name As Theatre, 
         A1.amount As Amount 

         FROM 
         screen_ticket_booking_history A1 

         LEFT OUTER JOIN movies A2 ON A1.movie_id=A2.id 
         LEFT OUTER JOIN theatres A3 ON A1.theatre_id=A3.id 
         LEFT OUTER JOIN users_backend A4 ON A3.users_backend_id=A4.id 

         WHERE A1.booking_date >= :start_date 
         AND A1.booking_date <= :end_date 
         AND A3.users_backend_id = :id', 

       'params' => [':start_date' => $year_start,':end_date'=>$year_end,':id'=> $userid], 
       'totalCount' => $count, 
      ]); 


      // get the user records in the current page 
      $models = $dataProvider->getModels(); 
      //no dataprovider 




        return $this->render('index', 
         [ 'model'    => $model, 
          'dataProvider'  => $models, 

         ]); 
       } 
+0

當我使用printr($ models); die();有導致 – Bloodhound

+0

因此,如果$車型有結果,這意味着,這個問題是別的地方...看起來的dataProvider –

+0

好了我的第一個問題ñ感謝回答 – Bloodhound

回答

1

歐凱我看到什麼是錯的

   return $this->render('index', 
        [ 'model'    => $model, 
         'dataProvider'  => $models, 

        ]); 

getModels()只返回元素的數組。如果你正試圖生成gridView或類似的東西你應該給整個dataProvider。所以它應該是

'dataProvider'  => $dataProvider, 
+0

我嘗試過,但我得到了另一個錯誤:消息格式「數」是唯一的支持整數值。您必須安裝PHP intl擴展才能使用此功能。 – Bloodhound

+2

這樣安裝intl擴展 –

相關問題