2017-05-26 65 views
0

我創建了一個運行良好的select查詢。但現在我需要將其更改爲類似的查詢。任何人都可以告訴我正確的方法嗎?如何在Zend Framework中編寫類似查詢2

這是我的選擇查詢結構 - >

public function getSelectedHotel($id) 
{ 
    $selectedHotel = $this->tableGateway->select(['hotel_id' => $id]); 

     return $selectedHotel; 
} 

當我像這樣的代碼它給我這個錯誤。

代碼 - >

$hotelsByYear = $this->tableGateway->select()->where('date_added like ?',$year.'%'); 

錯誤 - >

Fatal error: Uncaught Error: Call to undefined method Zend\Db\ResultSet\ResultSet::where() in

+0

可能的重複[Zend 2 - TableGateway Where Clauses](https://stackoverflow.com/questions/13334220/zend-2-tablegateway-where-clauses) – Dymen1

回答

0

請嘗試下面的代碼或參考official document

$where = new Where();  
$where->like('Field_Name', '%'.$ParamVal.'%'); 
//use as below 
$this->tableGateway->select($where); 

不要忘記使用Zend\Db\Sql\Where;

希望這有助於

0

請看看文檔:https://framework.zend.com/manual/2.2/en/modules/zend.db.table-gateway.html#basic-usage

它應該是這樣的:

$hotelsByYear = $this->tableGateway->select(function (Select $select) { 
    $select->where->like('date_added', $year.'%'); 
}); 

Ë xplanation: 每次你調用$ tableGateway-> select()時,查詢都會被執行,所以如果你做了$ tableGateway-> select() - >你調用了 - > where()的結果 - > select ()方法,這顯然是一個Zend \ Db \ ResultSet \ ResultSet。

0

$表 - >選擇() - >在哪裏( 'FIELD_NAME', '%' $ ParamVal '%' );