Salve a tutti
so già che quello che sto per chiedervi sarà un po’ complicato sia da spiegare sia da capire
Come da titolo avrei bisgno di fare un multijoin con dataprovider.
Mi spiego meglio ho le seguenti tabelle
prodotto affitto vendita utente utente_osserva_prodotto.
Ovviamente sono in relazione tra loro In utente_osserva_prodotto ho due foreingkey una per l’idutente e una per l’idprodotto. Ora mi servirebbe fare in modo che dalla relazione che mi prende l’id prodotto io possa vedere se il prodotto è nella tabella vendita o nella tabella affitto. E’ possibile fare una cosa del genere?
In pratica si tratterebbe di fare una join su 4/5 tabelle.
Vi posto un po’ di codice magari è più utile:
public function actionAjaxprodottiosservati(){
$idutente=Yii::app()->user->getId();
$categorie=Categoria::model()->findAll();
$sottocategorie=Sottocategoria::model()->findAll();
$plus['categorie'] = CHtml::listData($categorie, 'idcategoria', 'nome_categoria');
$plus['sottocategorie']=CHtml::listData($sottocategorie,'idsottocategoria', 'nome_sottocategoria','idcategoria');
$dataProvider=new CActiveDataProvider('UtenteOsservaProdotto',array(
'criteria'=>array(
'with'=>'idutente0',
'with'=>'idprodotto0',
'select'=>'*',
'condition'=>'t.idutente= :id',
'params'=>array(':id'=>$idutente),
),
));
/*
$this->renderPartial('ajaxprodottiosservati',array(
'dataProvider'=>$dataProvider,
'plus'=>$plus,
));*/
}
le condizioni in criteria sono le relazioni alle tabelle prodotto ed utente.
Quindi la domanda sarebbe la seguente è possibile inserire all’interno di criteria anche le relazione della tabella prodotto in modo da sapere se il prodotto è in vendita o affitto? Cioè cerco di spiegarmi ancora meglio
il model prodotto ha altre relazioni con affitto e vendita (chiamate affittos e venditas) è possibile inserire queste relazioni nei criteria?
Altrimenti dovrei proseguire come sto proseguendo, cioè per ogni dominio risultante da questa query faccio un’altra query per vedere se il dominio è in affitto o in vendita.
Ringrazio anticipatamente spero sia + o - chiaro