как в случае запроса в zend framework 2

Я использую Zend framework 2.x и сталкиваюсь с проблемой, поскольку у меня есть много поиска. Я хочу использовать подобное предложение в запросе, но каждый раз дает ошибки:

Вот мои усилия:

$sql = new Sql($this->adapter); $select = $sql->select()->columns( array('user_profile_id', 'profile_login_name'))->from($this->table)->where->like( 'profile_login_name', '%'.$strSearch.'%'); echo $select->getSqlString(); die; 

но это дает ошибку:

Неустранимая ошибка : вызов неопределенного метода Zend \ Db \ Sql \ Where :: getSqlString () в /var/www/YAAB/branches/admin/models/Model/UserTable.php в строке 131

Я также использовал Zend \ Db \ Sql \ Predicate, но это также дает ошибку.

Поэтому мой вопрос в том, что

  1. как использовать подобное предложение в запросе в zend framework 2?
  2. Что такое проблема в моем коде?

В ближайшее время ответьте, так как это срочно.

Попробуйте это

 $select = $sql->select(); // or new Select('table'); $where = new \Zend\Db\Sql\Where(); // Using predicates $where->addPredicate( new \Zend\Db\Sql\Predicate\Like('my_field', '%test%') ); // Alternatively, a shortcut $where->like('my_field', '%test%'); // Alternatively, a shortcut. $select->where($where); // this part will depend on if you're using TableGateway or what ever $stmt = $sql->prepareStatementForSqlObject($select); $resultSet = new ResultSet(); $resultSet->initialize($stmt->execute()); 

Вы можете использовать Predicator для использования Like.

 use Zend\Db\Sql\Predicate\Like $where = new Where(); $where->like('my_field', '%' . $test . '%'); $select->where($where); 

Примечание. И чтобы использовать Not Like, вы можете использовать Literal.

 $where->literal('my_field NOT LIKE ?', '%' . $test . '%'); 

Я использую то, что поможет мне стать намного проще.

  <?php namespace WebApp\Table; use Zend\Db\TableGateway\TableGateway; use Zend\Db\Sql\Where; use Zend\Db\Sql\Sql, Zend\Db\Adapter\Adapter; use Zend\Db\Sql\Expression; class ClassName { public function sidebarJobByUser(\WebApp\Entity\User $user) { $userId = $user->getId(); $adapter = $this->tableGateway->getAdapter(); $sql = new Sql($adapter); $select = $sql->select(); $select->from($this->table) ->columns(array('user_profile_id', 'profile_login_name')) ->where->like('profile_login_name', '%'.$strSearch.'%'); $statement = $sql->getSqlStringForSqlObject($select); $results = $adapter->query($statement, $adapter::QUERY_MODE_EXECUTE); return $results; } }