在yii框架中使用Criteria从MANY到MANY选择关系


select relations from MANY to MANY in yii framework using Criteria

我有一个表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

我希望与关系相关的数据(在这种情况下是货币)作为选择的一部分返回,就像这样(因为这是一个多对多关系,所以用'分隔一个接一个地追加):

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文档。