[Risolto] Query Count Doctrine e Symfony 3

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Scrivi risposta
enigma83
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1400
Iscrizione: mercoledì 2 gennaio 2008, 13:12

[Risolto] Query Count Doctrine e Symfony 3

Messaggio da enigma83 »

Buongiorno a tutti.. sto imparando symfony :D
Premesso che nel controller la query e la action siano corrette:

Codice: Seleziona tutto

   
 public function countAction()
    {
		$query = $this->getDoctrine()->getRepository('AppBundle:Nutrizionisti')->findAll();
		$foo = $query->getResult();
		$count = count($foo);
		
		return $this->render('default/index.html.twig', array('count' => $count)); 
    }
in index.html.twig come richiamo la variabile $count?
Ultima modifica di enigma83 il lunedì 2 maggio 2016, 15:11, modificato 1 volta in totale.
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: Query Count Doctrine e Symfony 3

Messaggio da Zoff »

Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
enigma83
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1400
Iscrizione: mercoledì 2 gennaio 2008, 13:12

Re: Query Count Doctrine e Symfony 3

Messaggio da enigma83 »

Quindi trasformo questa:

Codice: Seleziona tutto

    public function countAction()
    {
		$query = $this->getDoctrine()->getRepository('AppBundle:Nutrizionisti')->findAll();
		$foo = $query->getResult();
		$count = count($foo);
		
		return $this->render('default/index.html.twig', array('count' => $count)); 
    }
in :

Codice: Seleziona tutto

    public function rowCount()
    {
		$query = $this->getDoctrine()->getRepository('AppBundle:Nutrizionisti')->findAll();
		$count = $query->rowCount();

		
		return $this->render('default/index.html.twig', array('count' => $count)); 
    }
e in index.html.twig metto:

Codice: Seleziona tutto

{{ count }}
???
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: Query Count Doctrine e Symfony 3

Messaggio da Zoff »

No scusa, rowCount è un metodo di Statement non di Query.

Basta cambiare getResult() in getArrayResult() nel primo codice che hai postato.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
enigma83
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1400
Iscrizione: mercoledì 2 gennaio 2008, 13:12

Re: Query Count Doctrine e Symfony 3

Messaggio da enigma83 »

ok fatto ma in index.html.twig cosa metto?? visto che se inserisco {{ count }} mi dice :
Variable "count" does not exist in default/index.html.twig at line 39
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: Query Count Doctrine e Symfony 3

Messaggio da Zoff »

Sicuro dia ver usato questo?

Codice: Seleziona tutto

      return $this->render('default/index.html.twig', array('count' => $count)); 
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
enigma83
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1400
Iscrizione: mercoledì 2 gennaio 2008, 13:12

Re: Query Count Doctrine e Symfony 3

Messaggio da enigma83 »

public function countAction()
{
$query = $this->getDoctrine()->getRepository('AppBundle:Nutrizionisti')->findAll();
$foo = $query->getArrayResult();
$count = count($foo);

return $this->render('default/index.html.twig', array('count' => $count));
}
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: Query Count Doctrine e Symfony 3

Messaggio da Zoff »

pulisci la cache:

Codice: Seleziona tutto

php bin/console cache:clear --env=prod
php bin/console cache:clear --env=dev
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
enigma83
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1400
Iscrizione: mercoledì 2 gennaio 2008, 13:12

Re: Query Count Doctrine e Symfony 3

Messaggio da enigma83 »

fatto ma il problema persiste :(
enigma83
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1400
Iscrizione: mercoledì 2 gennaio 2008, 13:12

Re: Query Count Doctrine e Symfony 3

Messaggio da enigma83 »

x evitare dubbi ti allego il controller ed il twg
fileinteressati.zip
(2.62 KiB) Scaricato 14 volte
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: Query Count Doctrine e Symfony 3

Messaggio da Zoff »

Dove hai configurato la rotta?
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
enigma83
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1400
Iscrizione: mercoledì 2 gennaio 2008, 13:12

Re: Query Count Doctrine e Symfony 3

Messaggio da enigma83 »

non ne ho la + pallida idea :D
io stavo facendo questo progetto in symfony 2 poi l'ho passato ad un altro programmatore che lo ha rifatto in symfony 3.. e ora nel file routing.yml vedo solo questo:

Codice: Seleziona tutto

app:
    resource: "@AppBundle/Controller/"
    type:     annotation
fos_user:
    resource: "@FOSUserBundle/Resources/config/routing/all.xml"
e nelle altre directories non c'è nulla riferito al routing :muro:
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: Query Count Doctrine e Symfony 3

Messaggio da Zoff »

Quindi non stai caricando countAction() ma indexAction(). Tutto chiaro no?

Aggiungi questo prima di countAction():

Codice: Seleziona tutto

    /**
     * @Route("/count", name="count")
     */
Poi accedi alla rotta /count invece di /.

Queste però sono le basi delle basi di Symfony, tra 2 e 3 non cambia nulla.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
enigma83
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1400
Iscrizione: mercoledì 2 gennaio 2008, 13:12

Re: Query Count Doctrine e Symfony 3

Messaggio da enigma83 »

saranno anche le basi ma.. 1 io ho specificato che sto imparando.. 2.. non sono convinto che ci sia bisogno di un metodo count e quindi di una rotta xkè devo semplicemente mettere un numerino in un widget della home... ovvero nella home inserire un contatore per nutrizionisti pazienti e diete.. quindi dovrei creare 3 metodi e 3 rotte.. ma le rotte non servono a specificare un percorso in cui trovare una pagina? a me la pagina è sempre la index (home ) e non c'è alcun link sul contatore... esemplifico con uno screen
diete.jpg
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: Query Count Doctrine e Symfony 3

Messaggio da Zoff »

1. Si tratta di uno dei capitoli della guida base, se stai imparando come minimo dovrai leggere la documentazione no? https://symfony.com/doc/current/book/routing.html

2. Ma l'hai creata tu l'action countAction, se non sei convinto che serva perché l'hai creata?

Soluzione: Copia il codice che hai messo countAction dentro indexAction e sei a posto.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
enigma83
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1400
Iscrizione: mercoledì 2 gennaio 2008, 13:12

Re: Query Count Doctrine e Symfony 3

Messaggio da enigma83 »

l'ho letta la documentazione...ma come ho già scritto... è un software iniziato da un altro programmatore... e dove dovrebbero esserci le route non ci sono...
la countAction mi hai scritto tu di crearla.. e ho già copiato il codice dentro l'index e come ho scritto sopra mi da quest'errore:
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: Query Count Doctrine e Symfony 3

Messaggio da Zoff »

enigma83 [url=http://forum.ubuntu-it.org/viewtopic.php?p=4876771#p4876771][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto: e ho già copiato il codice dentro l'index e come ho scritto sopra mi da quest'errore:
Error_ Call to a member function getArrayResult() on array (500 Internal Server Error).pdf
il metodo findAll() restituisce già un array.
Quindi:

Codice: Seleziona tutto

$elencoNutrizionisti = $this->getDoctrine()->getRepository('AppBundle:Nutrizionisti')->findAll();
$count = count($elencoNutrizionisti);
enigma83 [url=http://forum.ubuntu-it.org/viewtopic.php?p=4876771#p4876771][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto: l'ho letta la documentazione...ma come ho già scritto... è un software iniziato da un altro programmatore... e dove dovrebbero esserci le route non ci sono...
Secondo la documentazione, fin dalla versione 2.0, le rotte possono essere definite in piu' punti, tra cui le annotation (che nella documentazione è proprio il primo esempio) come evidente per indexAction, quindi le rotte sono proprio dove dovrebbero essere.
Capisco la difficoltà se non si ha dimestichezza con il framework ma in questo caso il fatto che il codice l'abbia scritto qualcun'altro su una versione piu' aggiornata non c'entra davvero nulla.
Lo trovo difficile da credere, come posso avertelo detto io se è presente già nel codice del tuo primo post di apertura?
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
enigma83
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1400
Iscrizione: mercoledì 2 gennaio 2008, 13:12

Re: Query Count Doctrine e Symfony 3

Messaggio da enigma83 »

ok tutto risolto.. grazie mille...

$elencoNutrizionisti = $this->getDoctrine()->getRepository('AppBundle:Nutrizionisti')->findAll();
$count = count($elencoNutrizionisti);



$elencoPazienti = $this->getDoctrine()->getRepository('AppBundle:Pazienti')->findAll();
$countpaz = count($elencoPazienti);

return $this->render('default/index.html.twig', array('count' => $count, 'countpaz' => $countpaz));
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: Query Count Doctrine e Symfony 3

Messaggio da Zoff »

Valuta però di aggiungere delle query di count, caricare in ram tutti i record solo per avere i conteggi è uno specchio di risorse ed un imbuto per le performance.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 19 ospiti