Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony] order by rand()
dopelganger
post 20.05.2015, 08:24:09
Post #1





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

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


cześć

wszystko ładnie pięknie 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
Crozin
post 20.05.2015, 08:48:03
Post #2





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

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


1. Problem dotyczy Doctrine, nie Symfony.
2. Powinieneś utworzyć zapytanie DQL z klauzulą ORDER BY: http://doctrine-orm.readthedocs.org/en/lat...ry-builder.html
Go to the top of the page
+Quote Post
dopelganger
post 20.05.2015, 11:31:41
Post #3





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

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


Cytat(Crozin @ 20.05.2015, 09:48:03 ) *
1. Problem dotyczy Doctrine, nie Symfony.
2. Powinieneś utworzyć zapytanie DQL z klauzulą ORDER BY: http://doctrine-orm.readthedocs.org/en/lat...ry-builder.html


mam z tym problem, wywala błąd kiedy podaje ->orderBy('RAND()')

[Syntax Error] line 0, col 63: Error: Expected end of string, got '('


  1. $q = $this->getDoctrine()
  2. ->getRepository('ArticleBundle:Article')
  3. ->createQueryBuilder('a')
  4. ->setMaxResults(4)
  5. //->orderBy('RAND()')
  6. ->getQuery();
  7. $rand = $q->execute();
Go to the top of the page
+Quote Post
redeemer
post 20.05.2015, 11:42:10
Post #4





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

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


http://www.doctrine-project.org/jira/browse/DDC-950 "Won't fix"

https://gist.github.com/Ocramius/919465


--------------------
Go to the top of the page
+Quote Post
M4ver
post 20.05.2015, 11:45:07
Post #5





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 22.03.2014

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


Spróbuj :
http://doctrine-orm.readthedocs.org/en/lat...native-sql.html
Go to the top of the page
+Quote Post
dopelganger
post 20.05.2015, 13:51:38
Post #6





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

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


Cytat(M4ver @ 20.05.2015, 12:45:07 ) *



mam coś takiego:

  1. $rsm = new ResultSetMapping();
  2. $query = $this->em->createNativeQuery('SELECT * FROM article ORDER BY RAND()', $rsm);
  3. $rand = $query->getResult();


mam byka:

Notice: Undefined property:....Bundle\Controller\DefaultController::$em

co mam wstawić pod em ?

($em = $this->getDoctrine()->getManager()questionmark.gifquestionmark.gif nie działa,

Ten post edytował dopelganger 20.05.2015, 13:52:22
Go to the top of the page
+Quote Post
Crozin
post 20.05.2015, 14:20:24
Post #7





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
pyro
post 20.05.2015, 14:25:33
Post #8





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


Cytat(Crozin @ 20.05.2015, 14:20:24 ) *
RANDOM()


RAND()

Pamiętaj autorze tematu, że nie bez powodu nie ma implementacji tego w Doctrine, więc zastanów się czego dokładnie potrzebujesz


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
dopelganger
post 20.05.2015, 14:36:30
Post #9





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
Crozin
post 20.05.2015, 15:00:47
Post #10





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

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


Ale zdajesz sobie sprawę, że utworzyłeś nowy, kompletnie z niczym nie związany obiekt $config (Doctrine\ORM\Configuration)?
http://symfony.com/doc/current/cookbook/do..._functions.html
Go to the top of the page
+Quote Post
dopelganger
post 21.05.2015, 07:35:52
Post #11





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

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


Cytat(Crozin @ 20.05.2015, 16:00:47 ) *
Ale zdajesz sobie sprawę, że utworzyłeś nowy, kompletnie z niczym nie związany obiekt $config (Doctrine\ORM\Configuration)?
http://symfony.com/doc/current/cookbook/do..._functions.html



dzięki za pomoc.
działa

a tutaj link (krok po kroku) http://cyberapp.ru/2014/08/27/symfony-2-do...-order-by-rand/
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 4.05.2025 - 06:01