paskuale
(Pellicanipasquale)
April 5, 2012, 12:22pm
1
Salve ho un MODEL_figlio che viene gestito N volte all’interno di un’altro MODEL_Padre, vorrei cambiargli qualche caratteristica (poche altrimenti avrei fatto un’altro model )
Domanda, come posso riconoscere se tra gli N models_figli ho davanti il primo … il terzo, il quarto o l’ultimo ? Evitando noiose query inline possibilmente, magari Yii possiede qualche magic method !!
thanks
proid
(Fausto Mura)
April 5, 2012, 4:08pm
2
se intendi che vuoi sapere il nome della classe usata per una variabile allora devi usare il metodo [font="verdana, arial, helvetica, sans-serif"][size="4"]get_class [/size][/font][font="verdana, arial, helvetica, sans-serif"][size="4"] ([/size][/font][font="verdana, arial, helvetica, sans-serif"][size="4"])[/size][/font]
[font="verdana, arial, helvetica, sans-serif"][size="4"]http://php.net/manua...n.get-class.php
[/size][/font]
paskuale
(Pellicanipasquale)
April 6, 2012, 3:27am
3
Ciao proid no non intendevo quello, parlo di models, mi spiego meglio:
Ho un model "Libro" e un model "Foglio" (in un libro ci sono N fogli)
Come posso avere l’ordinamento dei fogli del libro ?
Cioè capire se ho davanti il primo foglio piuttosto che il terzo o l’ultimo e così via!
Non sò se si può creare un metodo riutilizzabile piuttosto che scrivere ogni volta una query.
tnx
emafer
(Emanuele Ferrarini)
April 6, 2012, 4:24am
4
paskuale:
Ciao proid no non intendevo quello, parlo di models, mi spiego meglio:
Ho un model "Libro" e un model "Foglio" (in un libro ci sono N fogli)
Come posso avere l’ordinamento dei fogli del libro ?
Cioè capire se ho davanti il primo foglio piuttosto che il terzo o l’ultimo e così via!
Non sò se si può creare un metodo riutilizzabile piuttosto che scrivere ogni volta una query.
tnx
Immagino che usare un array Pagine sia fuori luogo, del tipo
Libro->pagine[N]=Foglio
Libro->pagine[N+1]=Foglio2 ect
paskuale
(Pellicanipasquale)
April 6, 2012, 6:59am
5
mmm… nel mio caso non ho il model "pagine" ho solo (LIBRO) & (FOGLI)
Mi servirebbe una situazione tipo:
if($modelLibro->$modelFoglio->e_primo {}
if($modelLibro->$modelFoglio->e_ultimo {}
elseif //(tutti gli altri casi) ....
grazie cmq
emafer
(Emanuele Ferrarini)
April 6, 2012, 7:02am
6
Però potresti aggiungere alla classe del tuo model LIBRO un
public var $pagine=array();
In qusto modo hai sempre a diposizione un contenitore in cui inserire i vari fogli.
mdomba
(Maurizio Domba Cerin)
April 6, 2012, 7:20am
7
Come aggiungi i fogli ad un libro, e come sai l’ordine dei fogli ?
Potresti avere un field nella tabela fogli che sarebbe l’ordine dei fogli.
paskuale
(Pellicanipasquale)
April 6, 2012, 11:50pm
8
mdomba:
Come aggiungi i fogli ad un libro, e come sai l’ordine dei fogli ?
Potresti avere un field nella tabela fogli che sarebbe l’ordine dei fogli.
In realtà i fogli non vengon messi in un libro alla volta, ma 2 fogli in un libroA, poi un foglio nel libroB, poi altri 4 fogli nel libroC, dunque la primaryKey non mi aiuta in questo caso.
paskuale
(Pellicanipasquale)
April 6, 2012, 11:57pm
9
emafer:
Però potresti aggiungere alla classe del tuo model LIBRO un
public var $pagine=array();
In qusto modo hai sempre a diposizione un contenitore in cui inserire i vari fogli.
Ciao ma ho già fogli come matrice non me ne serve un’altra ho la relations
LibroModel :
public function relations()
{
return array(
'fogli' => array(self::HAS_MANY, 'Tbl_Foglio' , 'libro_fk'),
);
}
che mi torna tutti i fogli presenti in quel libro.
Devo ciclare col foreach ? O posso ricavarmi la posizione del record tramite array() ?
tnx
emafer
(Emanuele Ferrarini)
April 7, 2012, 6:36am
10
paskuale:
Ciao ma ho già fogli come matrice non me ne serve un’altra ho la relations
LibroModel :
public function relations()
{
return array(
'fogli' => array(self::HAS_MANY, 'Tbl_Foglio' , 'libro_fk'),
);
}
che mi torna tutti i fogli presenti in quel libro.
Devo ciclare col foreach ? O posso ricavarmi la posizione del record tramite array() ?
tnx
Quindi il tuo problema sarebbe solo nel dire a Yii come ordinarli allinterno della relazione, giusto?
Io credo che Yii li ottenga generalmente in base alla pk,
forse potressti aggiungere un campo order per foglio e dire a Yii di estrarli in base alla pk e ordinarli per order.
Giusto?
ecco ciò che dice qui Yii:
class User extends CActiveRecord
{
public function relations()
{
return array(
'posts'=>array(self::HAS_MANY, 'Post', 'author_id',
'order'=>'posts.create_time DESC',
'with'=>'categories'),
'profile'=>array(self::HAS_ONE, 'Profile', 'owner_id'),
);
}
}
In qualche esempio ho trovato al posto di posts.create ??.create, vedi tu in quale modo funziona meglio