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