Estrarre un array di valori da tabella

6 views
Skip to first unread message

Michele Bassanini

unread,
May 31, 2016, 9:18:34 AM5/31/16
to yii...@googlegroups.com

Devo recuperare dalla tabella DIPIXREG [ID_RIGA_ATTIVITA, COD_DPI] tutti i cod_dpi associati al codice riga presente nel modello che sto modificando.

Li ho bisogno in un array con solo il cod_dpi perché devo prepopolare una CheckboxList, quindi nel formato ['6', '15'] (ad esempio, dove 6 e 15 sono i due codici relativi alla riga in questione)

L'unico modo che abbiamo trovato è questo:

$dpiReg=new DIPIXREG;

$dpiModello = $dpiReg->find()
->select(['COD_DPI'])
->where(['ID_RIGA_ATTIVITA'=>$model->ID_RIGA_ATTIVITA])
->asArray()
->all();

$dpiSel=array();

foreach ($dpiModello as $d){
    array_push($dpiSel, $d['COD_DPI']);
}

Ma mi sembra complicato con anche il foreach per tirare fuori due valori da una tabella, non c'è un modo più veloce?

Con un asArray o simili non posso evitare la chiave ed estrarre solo i valori?

Grazie,

Michele

Fabrizio Caldarelli

unread,
May 31, 2016, 9:23:53 AM5/31/16
to yii...@googlegroups.com
\yii\helpers\ArrayHelper::map( DIPIXREG::find()->where(['ID_RIGA_ATTIVITA'=>$model->ID_RIGA_ATTIVITA])->all(), 'COD_DPI', 'COD_DPI' )

Otterrai un vettore in cui le chiavi sono i COD_DPI ed i valori COD_DPI.

Puoi passare questo array direttamente alla checkboxList.

Altrimenti potresti creare una relazione nel tuo $model, del tipo

    public function getDpixregs()
    {
        return $this->hasMany(DPIXREG::className(), ['ID_RIGA_ATTIVITA' => 'ID_RIGA_ATTIVITA']);
    }  

e poi fare:

\yii\helpers\ArrayHelper::map( $model->dpixregs, 'COD_DPI', 'COD_DPI' )

ed ottenere lo stesso risultato.

Il 31/05/16 15:18, Michele Bassanini ha scritto:
--
Hai ricevuto questo messaggio perché sei iscritto al gruppo "yii-it" di Google Gruppi.
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email, invia un'email a yii-it+un...@googlegroups.com.
Per postare in questo gruppo, invia un'email a yii...@googlegroups.com.
Visita questo gruppo all'indirizzo https://groups.google.com/group/yii-it.
Per altre opzioni visita https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
0 new messages