如何在Zend Framework 2中编写类似的查询

时间:2017-05-26 05:43:50

标签: php mysql zend-framework

我创建了一个运行良好的选择查询。但现在我需要将其更改为类似的查询。有谁能告诉我正确的方法?

这是我的选择查询结构 - >

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()

4 个答案:

答案 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.'%')
]);