Я использую 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, но это также дает ошибку.
Поэтому мой вопрос в том, что
В ближайшее время ответьте, так как это срочно.
Попробуйте это
$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; } }