1

このクエリ:

$this->getEntityManager()
        ->createQuery("SELECT k FROM FooBarBundle:Kode k WHERE k.kode LIKE :keyword OR k.nama LIKE :keyword ORDER BY k.kode ASC")
            ->setParameter("keyword", "%$keyword%")
            ->setMaxResults($limit)
            ->setFirstResult($offset)
        ->getResult();

次の SQL エラーを生成します。

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OFFSET 0' at line 1

しかし、行を削除すると、setFirstResult($offset)正常に機能します。Doctrine ライブラリ全体をアップグレードする代わりに、これに対する回避策はありますか (パッチで問題ないかもしれません)?

4

1 に答える 1

1

削除する必要があると思います

ORDER BY k.kode ASC

クエリから次のようなメソッドで設定します。

$this->getEntityManager()
        ->createQuery("SELECT k FROM FooBarBundle:Kode k WHERE k.kode LIKE :keyword OR k.nama LIKE :keyword")
            ->setParameter("keyword", "%$keyword%")
            ->setMaxResults($limit)
            ->setFirstResult($offset)
            ->orderBy("k.kode")
            ->getResult();
于 2012-04-26T19:26:26.137 に答える