Problema Ricerca Su Relazione 1-N-1

Oggetti e relazioni

Company [1 -> N] CompanyCategory [N -> 1] Category

Nel ‘search’ di company devo poter cercare da una combo delle categorie.

Ho una relazione has_many in company




"companyCategoryObj" =>  array(self::HAS_MANY, "CompanyCategory", "companyId"),



nel metodo search




$criteria->with  = array ( ... , 'companyCategoryObj');

....

$criteria->compare('companyCategoryObj.categoryId', $this->companyCategoryId);



Ma ho notato che nel SQL generato, questa tabella NON viene messa mai in join. Anzi, se provo a cercarlo mi da, giustamente, un errore SQL perchè effettuo un WHERE su una tabella che non compare nella catena dei FROM… JOIN …

Da cosa dipende ?

Aiuto…

Tenete conto che il fantomatico ‘together’ devo metterlo su ‘false’ perchè su ‘true’ non va più correttamente il paginatore… non so se c’entra.

HO MESSO UNA PEZZA TEMPORANEA MA MI FA VERAMENTE SCHIFO




if ($this->categoryId) {

	$cat = CompanyCategory::model()->findAllByAttributes(array("categoryId" => $this->categoryId));

	if (count($cat)) {

   	    foreach ($cat as $cCat) {

     		         $companyId[] = $cCat->companyId;   

            } 

     	    $criteria->addInCondition('companyId', $companyId);

        }

}



Davvero non c’è modo di farlo fare ad Yii ?!?!

Tu hai creato una relazione 1 a molti, ma in verità devi usare una relazione molti a molti. Se cerchi bene nella documentazione di yii, trovi questo snippet:


            'categories'=>array(self::MANY_MANY, 'Category',

                'tbl_post_category(post_id, category_id)'),

Non pensavo fosse stringente questa cosa del many to many, comunque domani in ufficio provo, perché odio fare le cose a mano usando un framework.

Cosa intendi con "stringente"?