簡體   English   中英

喜歡在zend框架2中的查詢

[英]like in where query in zend framework 2

我使用Zend框架2.x並面對問題,因為我已經搜索了很多。 我想在查詢中使用like子句,但每次都會給出錯誤:

這是我的努力:

$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;

但是這給出了錯誤:

致命錯誤 :在第131行的/var/www/YAAB/branches/admin/models/Model/UserTable.php中調用未定義的方法Zend \\ Db \\ Sql \\ Where :: getSqlString()

我也使用了Zend \\ Db \\ Sql \\ Predicate但這也給出了錯誤。

所以我的問題是

  1. 如何在zend框架2中使用查詢中的like子句?
  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;
            }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM