ページネーションをしようとしていますが、エラーがあります:
[構文エラー]行0、列57:エラー:文字列の終わりが予想され、 'limit'が取得されました
これが私のクエリを作成するための正しい構文(およびロジック)かどうかはよくわかりません。
public function getFriendsFromTo ($user, $limit, $offset)
{
return $this->getEntityManager()
->createQuery('SELECT f FROM EMMyFriendsBundle:Friend f WHERE f.user='.$user.' limit '.$limit. 'offset' .$offset)
->getResult();
}
友人とユーザーはmanyToOneとoneToManyに関連しているため、friendsテーブルにはフィールドuser_idがあります。
これは私のコントローラーにあります:
$user = $this->get('security.context')->getToken()->getUser();
$id = $user->getId();
$friends = $user->getFriends();
$result = count($friends)
$FR_PER_PAGE = 7;
$pages = $result/$FR_PER_PAGE;
$em = $this->getDoctrine()->getEntityManager();
$friends = $em->getRepository('EMMyFriendsBundle:Friend')
->getFriendsFromTo($id, $FR_PER_PAGE, $page*$FR_PER_PAGE);
私はそれが愚かで間違っていることを知っています(特に3番目のパラメータは$page*$FR_PER_PAGE
)が、クエリが機能するかどうか試してみたかったのですが、機能しませんでした。
いや。つかいます:
return $this->getEntityManager()
->createQuery('...')
->setMaxResults(5)
->setFirstResult(10)
->getResult();
$towary = $this->getDoctrine()
->getRepository('AcmeStoreBundle:Towar')
->findBy(array(),array(),10,($current-1)*$numItemsPerPage);
doctrineリポジトリのメソッドのfindBy
とlimit
であるoffset
の3番目と4番目のパラメーターを使用できます。
メソッド定義は次のとおりです。
findBy(
array $criteria,
array $orderBy = null,
integer|null $limit = null,
integer|null $offset = null
)
ソース: http://www.doctrine-project.org/api/orm/2.2/class-Doctrine.ORM.EntityRepository.html
あなたも使用できます
$ query-> getSingleResult();