5

私は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. 私のコードの問題は何ですか?

緊急になりましたら、すぐに返信してください。

4

3 に答える 3

11

これを試してみてください

$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());
于 2013-03-22T15:43:53.423 に答える
6

そのように使用すると、はるかに簡単になります。

    <?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;
            }
    }
于 2013-05-20T08:18:19.687 に答える