La comunità italiana su CakePHP

You are not logged in. Please login or register.


Pages: 1

Atom RSS

Posts [ 4 ]

d@d0

Topic: Due 'find' consecutive

Ciao a tutti, spero sia il posto giusto dove chiedere illuminazioni pr questo problema.

Allora, ecco il mio problema. Gestendo delle news, io voglio visualizzare l'ultima notizia nella sidebar; quindi come di consueto nell'app-controller faccio una find('first') sul modello News ordinato per data e passo una variabile $ultima_news nell'evento beforeRender cosi che nel layout venga visualizzata correttamente. E fin qui nessun problema, tutto funziona senza difficoltà.

La "stranezza" si verifica quando viene renderizzata la vista view proprio delle news, poichè in questo caso nella sidebar viene visualizzata la stessa notizia richiesta dalla action. Cioè se ad esempio richiedo l'url /news/view/3 nella sidebar non viene piu visualizzare l'ultima notizia, ma viene sempre mostrata la numero 3.

Premetto che uso due variabili distinte nel layout e nella vista, quindi non ci sono collisioni di nomi. Tuttavia, nella variabile $ultima_news ci finisce sempre la notizia che richiedo nella view, come se la seconda find (quella che in beforeRender legge l'ultima notizia) copiasse i dati dalla prima find.

Qualcuno ha qualche idea oppure gli è già capitato qualcosa di analogo?

d@d0

Re: Due 'find' consecutive

Trovato! smile
Praticamente (errore mio!!) non avevo capito che cake, dopo una query, si memorizza l'id a cui quella query fa riferimento (lo legge con getID() nella find), cioè il record corrente.

Quindi mi è bastato settare:

$this->id = false;

prima della seconda find ed il gioco è fatto.

Tuttavia non capisco come mai questo funzionamento, cioè come mai è stato pensato di funzionare cosi, cioè di memorizzare l'id della richiesta e tutte òe query successive fanno riferimento a questo.

C'è qualcuno che può spiegarmi cuesto comportamento?

Saiborg

Re: Due 'find' consecutive

Bè può esser comodo se fai più operazioni sullo stesso record, ad esempio leggi ti fai un paio di calcoli in php e aggiorni; viene un codice un po' più pulito.
Il tuo caso è un po' particolare perché cerchi due record 'singoli' slegati tra loro nella stessa action, cosa che magari la struttura del framework cerca di evitare.

In realtà poi il meccanismo è molto più utile quando inserisci nuovi record e ti serve immediatamente saperne l'id per fare delle scritture in tabelle associate.

arialdomartini

Re: Due 'find' consecutive

Non sarebbe più pulito mettere il codice per la ricerca a la visualizzazione dell'ultima news in un element per poi scrivere, nel layout

echo $this->element('last_news')?

Non mi sembra una buona idea stare a scomodare il beforeRender...

Posts [ 4 ]

Guest posting is disabled. You must login or register to post a reply.

Pages: 1

Topic info

0 guests and 0 users are reading this topic now


Forum quick jump menu

Currently used extensions: pun_topic_online_users, pun_karma, pun_admin_hook_navigator, pun_bbcode. Copyright © 2008 PunBB

[ Generated in 0.047 seconds, 12 queries executed ]