У меня есть таблица 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, разделенных ',' из связанной модели.
благодаря
Вам нужно добавить имя отношения к с атрибутом, так что делает JOIN
с валютой и получает все соответствующие данные:
public function search(){
$criteria = new CDbCriteria;
$criteria->with = array('policyCurrency');
Для получения дополнительной информации проверьте документацию CDBCriteria.