it-swarm.com.de

Verwenden Sie Limit und Offset in der Doctrine2-Abfrage

Ich versuche die Paginierung durchzuführen, aber es gibt einen Fehler:

[Syntaxfehler] Zeile 0, Spalte 57: Fehler: Erwartetes Ende der Zeichenfolge, hat 'Limit'

Ich bin mir nicht ganz sicher, ob dies die richtige Syntax (und Logik) für meine Abfrage ist:

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();
}

Freunde und Benutzer sind manyToOne und oneToMany verwandt, daher gibt es in der Freundesliste ein Feld - user_id.

Dies ist in meinem Controller:

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

Ich weiß, dass es dumm und sogar falsch ist (insbesondere der dritte Parameter $page*$FR_PER_PAGE), Aber ich wollte nur versuchen, ob die Abfrage funktioniert, und das tat es nicht.

54
Faery

Nee. Verwenden:

  return $this->getEntityManager()
        ->createQuery('...')
        ->setMaxResults(5)
        ->setFirstResult(10)
        ->getResult();
125
Thomas K
$towary = $this->getDoctrine()
   ->getRepository('AcmeStoreBundle:Towar') 
   ->findBy(array(),array(),10,($current-1)*$numItemsPerPage);
31
vundek

Sie können findBy 3. und 4. Parameter der Methode doctrine repository, die limit und offset sind.

Hier ist die Methodendefinition:

findBy(
    array        $criteria,
    array        $orderBy  = null, 
    integer|null $limit    = null,
    integer|null $offset   = null
)

Quelle: http://www.doctrine-project.org/api/orm/2.2/class-Doctrine.ORM.EntityRepository.html

18
nheraly

sie können auch verwenden

$ query-> getSingleResult ();

1
matzeihnsein