我创建了一个运行良好的选择查询。但现在我需要将其更改为类似的查询。有谁能告诉我正确的方法?
这是我的选择查询结构 - >
public function getSelectedHotel($id)
{
$selectedHotel = $this->tableGateway->select(['hotel_id' => $id]);
return $selectedHotel;
}
当我这样编码时,它给了我这个错误。
代码 - >
$hotelsByYear = $this->tableGateway->select()->where('date_added like ?',$year.'%');
错误 - >
致命错误:未捕获错误:调用未定义的方法
中的Zend \ Db \ ResultSet \ ResultSet :: where()
答案 0 :(得分:0)
请查看文档:{{3}}
应该是这样的:
$hotelsByYear = $this->tableGateway->select(function (Select $select) {
$select->where->like('date_added', $year.'%');
});
说明: 每当你调用$ tableGateway-> select()时,查询都会执行,所以如果你执行$ tableGateway-> select() - > where()你调用 - > where()就会得到结果 - &gt ; select()方法,显然是Zend \ Db \ ResultSet \ ResultSet。
答案 1 :(得分:0)
请尝试以下代码或参考official document。
$where = new Where();
$where->like('Field_Name', '%'.$ParamVal.'%');
//use as below
$this->tableGateway->select($where);
不要忘记使用Zend\Db\Sql\Where;
希望这有帮助
答案 2 :(得分:0)
$ table-&gt; select() - &gt; where(&#39; Field_Name&#39;,&#39;%&#39;。$ ParamVal。&#39;%&#39;); < / p>
答案 3 :(得分:0)
另一种选择是使用谓词:
$selectedHotel = $this->tableGateway->select([
'hotel_id' => $id,
new \Zend\Db\Sql\Predicate\Like('date_added', $year.'%')
]);