EnChikiben
@EnChikiben

Yii поиск в many_to_many?

Доброй ночи, подскажите знатоки Yii.



Есть каталог дисков (Drivers), у каждого диска есть жанры (genres) (диск может относиться к нескольким жанром).



Связал их через many_to_many

public function relations()

{

return array(

'genres' => array(self::MANY_MANY, 'Genres', 'drives_in_genres(driver_id,genre_id)'),

);

}



Не могу понять как работает поиск по множественным записям, он толи группирует их то ли незнаю… подскажите.

вот метод поиска



public function search()

{

// Warning: Please modify the following code to remove attributes that

// should not be searched.



$criteria=new CDbCriteria;



$criteria->compare('id',$this->id);

$criteria->compare('user',$this->user);

$criteria->compare('name',$this->name,true);





if ( is_numeric($this->year_from) ) {

$criteria2 = new CDbCriteria;

$criteria2->condition = 'year '.( !isset($this->year_to) || intval($this->year_to) <=0? "=": ">=" ).' :year_from';

$criteria2->params = array(':year_from' => intval($this->year_from));

$criteria->mergeWith($criteria2);

}



if ( is_numeric($this->year_to) ) {

$criteria2 = new CDbCriteria;

$criteria2->condition = 'year '.( !isset($this->year_from) || intval($this->year_from) <=0? "=": "<=" ).' :year_to';

$criteria2->params = array(':year_to' => intval($this->year_to));

$criteria->mergeWith($criteria2);

}



//// тут я подцепляю записи и ищу их

$criteria->compare('genre_id',$this->genresIds);

$criteria->with=array('drivesInGenres');

// когда этот параметр выключен вывод идет нормально, а поиск не работает

$criteria->together=true;



return new CActiveDataProvider($this, array(

'criteria'=>$criteria,

'pagination' => array(

'pageSize' => 20,

),

));

}
  • Вопрос задан
  • 3475 просмотров
Пригласить эксперта
Ответы на вопрос 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
$criteria->together=true; позволяет вам не писать название таблицы, при указании полей. Вот и все.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы