Um eine Suche auch über die Relationen einer Active Record Klasse zu realisieren, muss Folgendes beachtet werden:
1. Die Relation muss vorhanden sein:
public function relations() { 'categories' => array(self::HAS_MANY, 'place_id', 'category_id'),
2. Die Relation muss suchbar sein:
public function rules() { array('name, categories', 'safe', 'on' => 'search'),
3. In der Suchfunktion muss folgender Code eingefügt werden. Das OR ist dabei optional aber wichtig, wenn man sich wundert, dass keine Ergebnisse angezeigt werden in der View.
public function findPlaces($searchTerm) { $criteria = new CDbCriteria; $criteria->compare('name', $this->name, true, 'OR'); $criteria->with = array('categories' => array("together" => true)); $criteria->compare('categories.name', $searchTerm,true, 'OR'); return new CActiveDataProvider($this, array( 'criteria' => $criteria, )); }