Salve, non riesco a capire una cosa e spero qualcuno mi possa fare luce in merito.
In uno scenario ho la necessità di visualizzare dati filtrati in base alla presenza o meno di dati in una tabella collegata con relazioni.
Ho una tabella "anagrafica" ed una tabella "plus" collegata pkid ON idAnagrafica.
Ho definito la relazione anche in relations
'plus'=>array(self::HAS_MANY, 'AnagraficaPlus', 'idAnagrafica','order'=>'plus.pkid DESC','limit'=>20),
se nello scenario utilizzo
$criteria->with = array('plus'=>array(
'joinType'=>'INNER JOIN',
//'on' => "chiave='ACQUE-CHIARE' AND valore='SI'",
'condition' => "chiave='ACQUE-CHIARE' AND valore='SI'",)
);
Non ottengo una vera inner join ma fa una select su anagrafica ed una su plus. Il risultato è simile ad una left outer join
se invece "riscrivo" la relazione nello scenario utilizzando
$criteria->join = "INNER JOIN tbl_anagraficaPlus ON tbl_anagraficaPlus.idAnagrafica = t.pkid";
$criteria->condition = "tbl_anagraficaPlus.chiave='ACQUE-CHIARE' AND tbl_anagraficaPlus.valore='SI'";
Allora la inner join effettivamente va.
Se cerco di fare le stesse cose utilizzando scopes e with insieme il risultato ottenuto è come nell’utilizzo di with in scenario (quindi non va bene per me).
Per pulizia volevo adoperare with e scopes, ma evidentemente c’è qualcosa di fondo che non capisco…
Qualcuno mi potrebbe delucidare in merito?
Grazie