I am using the Zend framework 2.x and facing the problem as I have search a lot. I want to use the like clause in query but each time gives the errors:
Here is my efforts:
$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;
but this gives the error:
Fatal error: Call to undefined method Zend\Db\Sql\Where::getSqlString() in /var/www/YAAB/branches/admin/models/Model/UserTable.php on line 131
I have also used the Zend\Db\Sql\Predicate but this also gives the error.
So my question are that
Please reply soon as it is urgent.
Try this out
$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());
You can use Predicator to use Like.
use Zend\Db\Sql\Predicate\Like
$where = new Where();
$where->like('my_field', '%' . $test . '%');
$select->where($where);
Note: And to use Not Like, you can use Literal instead.
$where->literal('my_field NOT LIKE ?', '%' . $test . '%');
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With