выберите отношения от МНОГО к МНОГИ в рамках yii, используя Критерии

1

У меня есть таблица Policy которая ссылается на другую таблицу Currency и отношение выглядит следующим образом:

'policyCurrency' => array(self::MANY_MANY, 'Currency', 'policy_currencies(PolicyId, CurrencyId)),

Я также использую функцию search представленную в модели, для получения данных, и я хочу выбрать Currency которая находится в соответствующей таблице Currency как часть поиска. Ниже приведена моя функция поиска.

public function search(){

    $criteria = new CDbCriteria;
    $criteria->compare('PolicyId', $this->PolicyId); 
    $criteria->compare('Name', $this->Name, true);
    $criteria->compare('Amount', $this->Amount, true);

    return new CActiveDataProvider($this, array( 'criteria' => $criteria));
}

При использовании поиска getData:

$result = Policy->search()->getData();

Результат возвращается в формате:

PolicyId = 1
Name = 'Test'
Amount = '20'
etc etc etc

Я хочу, чтобы данные, относящиеся к отношениям, которые являются валютой в этом случае, должны быть возвращены как часть выбора, подобного этому (добавление одного за другим, разделенного символом ",", поскольку это отношение MANY to MANY):

CurrencyId = 1,2,3

То, что я пробовал:

Попытка использовать

$criteria->with = array('policyCurrency');
$criteria->together = true;

но я смущен тем, как использовать select для выбора всех записей из первой таблицы Policy в моем случае и всех связанных CurrencyIds, разделенных ',' из связанной модели.

благодаря

Теги:
yii

1 ответ

0

Вам нужно добавить имя отношения к с атрибутом, так что делает JOIN с валютой и получает все соответствующие данные:

public function search(){

    $criteria = new CDbCriteria;
    $criteria->with = array('policyCurrency');

Для получения дополнительной информации проверьте документацию CDBCriteria.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню