在同一个查询中,就像 Zend 框架 2 一样


in the same query where and like zend framework 2

在哪里进行这样的查询,我该怎么办?

SELECT * FROM hotels WHERE name LIKE '%mykey%' AND country_id = '12'

我已经这样做了,但我们绝不能:

$select = $this->sql->select();
$select->from(self::TABLE);  
if ($params['key'])
{
   $where['where'] = new 'Zend'Db'Sql'Predicate'Like('name', '%'.$params['key'].'%');
}
if($params['country_id'])
{
  $where['where'] = array(
      'country_id' => $params['country_id']
  );
}
$select->where($where['where']);
$select->order('id DESC');
$statement = $this->sql->prepareStatementForSqlObject($select);
return $statement->execute();

必须发出 if 语句以更改查询的行为。我该怎么办?

$select = $this->sql->select();
$select->from(self::TABLE);  
if ($params['key'])
{
    $select->where->like('name', '%'.$params['key'].'%');
}
if($params['country_id'])
{
    $select->where(array('country_id' => $params['country_id']));
}
$select->order('id DESC');
$statement = $this->sql->prepareStatementForSqlObject($select);
return $statement->execute();