Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony] order by rand()
dopelganger
post
Post #1





Grupa: Zarejestrowani
Postów: 236
Pomógł: 0
Dołączył: 27.10.2012

Ostrzeżenie: (0%)
-----


cześć

wszystko ładnie pięknie (IMG:style_emoticons/default/smile.gif) a ja nie wiem :/
jak pobrać 4 losowe rekordy z bazy?
przewertowałem google ale wszędzie jakieś niejasności ,,,

  1. $rand = $em->getRepository('ArticleBundle:Article')->findBy(
  2. array('id'=>'DESC'),
  3. 4
  4. );


prosze o pomoc
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Nie musisz korzystać tutaj z natywnych zapytań SQL-owych, dodaj jedynie do Doctrine'a implementację dla funkcji RANDOM() wg linka podanego przez @redeemer - https://gist.github.com/Ocramius/919465 Przecież masz tam nawet przykład na sortowanie wg RANDOM().
Go to the top of the page
+Quote Post
dopelganger
post
Post #3





Grupa: Zarejestrowani
Postów: 236
Pomógł: 0
Dołączył: 27.10.2012

Ostrzeżenie: (0%)
-----


Cytat(Crozin @ 20.05.2015, 15:20:24 ) *
Nie musisz korzystać tutaj z natywnych zapytań SQL-owych, dodaj jedynie do Doctrine'a implementację dla funkcji RANDOM() wg linka podanego przez @redeemer - https://gist.github.com/Ocramius/919465 Przecież masz tam nawet przykład na sortowanie wg RANDOM().


dobra mam tak jak poniżej i wywala błąd:
[Syntax Error] line 0, col 63: Error: Expected end of string, got '('

  1. <?php
  2.  
  3. namespace My\ArticleBundle\Entity;
  4.  
  5.  
  6. /**
  7.  * RandFunction ::= "RAND" "(" ")"
  8.  */
  9. class Rand extends FunctionNode
  10. {
  11.  
  12. public function parse(\Doctrine\ORM\Query\Parser $parser)
  13. {
  14. $parser->match(Lexer::T_IDENTIFIER);
  15. $parser->match(Lexer::T_OPEN_PARENTHESIS);
  16. $parser->match(Lexer::T_CLOSE_PARENTHESIS);
  17. }
  18.  
  19. public function getSql(\Doctrine\ORM\Query\SqlWalker $sqlWalker)
  20. {
  21. return 'RAND()';
  22. }
  23. }


w DefaultController.php

  1. $config = new \Doctrine\ORM\Configuration();
  2. $config->addCustomNumericFunction('RAND', 'My\ArticleBundle\Entity\Rand');
  3.  
  4. $q = $this->getDoctrine()
  5. ->getRepository('MyArticleBundle:Article')
  6. ->createQueryBuilder('a')
  7. ->setMaxResults(4)
  8. ->orderBy('RAND()')
  9. ->getQuery();
  10. $rand = $q->execute();


Ten post edytował dopelganger 20.05.2015, 14:55:14
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 18.10.2025 - 13:32