使用Criteria

时间:2015-10-09 03:38:39

标签: php yii

我有一个表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从我的案例中的第一个表策略中选择所有记录,并从相关模型中选择','分隔所有相关的CurrencyId。

由于

1 个答案:

答案 0 :(得分:0)

您需要将关系名称添加到 with 属性,以便它使用Currency执行JOIN并获取其所有相关数据:

public function search(){

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

有关详细信息,请check CDBCriteria documentation