Yii Framework Forum: Dubbio Su Relation E Utilizzo Di Filtro In Una Gridview Con Metodo Search() - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Dubbio Su Relation E Utilizzo Di Filtro In Una Gridview Con Metodo Search() Rate Topic: -----

#1 User is offline   st4nny 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 325
  • Joined: 10-April 12

Posted 11 December 2012 - 06:19 AM

Salve a tutti,
vi espongo il mio dubbio.

ho una relazione impostata di questo tipo:
'stato'=>array(self::HAS_MANY, 'StatoProgetto', 'progetto_id','order'=>'createtime DESC'),
'stato_attuale'=>array(self::HAS_ONE, 'StatoProgetto', 'progetto_id','order'=>'createtime DESC'),


rappresenta una tabella di stato. Con la relazione di tipo HAS_ONE prendo i valori dell'ultimo stato presente in tabella.

Nella mia Gridview, renderizzo i valori che mi interessa sapere dei vari progetti, e insieme a questi lo stato attuale in cui verte il progetto in questo modo:
array(
	'name'=>'stato_att',
	'value'=>'$data->stato_attuale->stato->stato',
	'filter'=>Stato::model()->getStato(),
),

tutto va benone, tranne il filtro che il suo lo fa! ma non come vorrei io.
Mettiamo caso che un progetto ha come stato attuale: APPROVATO. Se io filtro i progetti con stato APPROVATO, ok lo vedo, ma se io imposto il filtro su stato PRESENTATO (ad esempio), mi compare anche il progetto che ha come stato attuale APPROVATO, perchè chiaramente nella tabella degli Stati esiste quell'id di stato richiesto con il filtro.

Come fare? Mi sono spiegato chiaramente?
Grazie a tutti.
0

#2 User is offline   sensorario 

  • Elite Member
  • Yii
  • Group: Moderators
  • Posts: 1,986
  • Joined: 07-September 10
  • Location:Cesena (Italy)

Posted 11 December 2012 - 08:13 AM

Per questo tipo di problema ci sono diverse soluzioni. Io in genere aggiungo dei metodi pubblici al model. Nel tuo caso probabilmente farei qualche cosa di simile:

    class MioModel extends CActiveRecord
    {
        public function getCertiValori()
        {
            return MioModel::model()->findAll(array(
                'stato' => StatoProgetto::APPROVATO,
            ));
        }
    }


Non risolve il tuo problema nello specifico, ma potrebbe aiutarti a trovare una soluzione.
0

#3 User is offline   st4nny 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 325
  • Joined: 10-April 12

Posted 11 December 2012 - 09:04 AM

Grazie sensorario per la risposta,
si queste soluzioni le utilizzo già per altri scopi, ma purtroppo in questo caso specifico non posso.

Perchè se io cercassi tutti i record con stato APPROVATO ovviamente lui me li restituirebbe tutti,
Nel mio caso specifico, il filtro dovrebbe agire solo sull'ultimo stato inserito, e non su tutti.

posso inserire qualche criteria.. non lo so..

View Postsensorario, on 11 December 2012 - 08:13 AM, said:

Per questo tipo di problema ci sono diverse soluzioni. Io in genere aggiungo dei metodi pubblici al model. Nel tuo caso probabilmente farei qualche cosa di simile:

    class MioModel extends CActiveRecord
    {
        public function getCertiValori()
        {
            return MioModel::model()->findAll(array(
                'stato' => StatoProgetto::APPROVATO,
            ));
        }
    }


Non risolve il tuo problema nello specifico, ma potrebbe aiutarti a trovare una soluzione.

0

#4 User is offline   sensorario 

  • Elite Member
  • Yii
  • Group: Moderators
  • Posts: 1,986
  • Joined: 07-September 10
  • Location:Cesena (Italy)

Posted 11 December 2012 - 12:28 PM

Era proprio quello che volevo dire: aggiungi criteria per ottenere il tuo set di risultati preciso.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users