在Yii中使用with()运算符时,选择不同的结果

时间:2014-04-25 14:50:57

标签: activerecord distinct yii

在Yii中使用with()运算符时,如何从关系表中仅选择不同的记录?

我得到了我的模特(记录):

$probe = Probes::model()->with(array
(
    'user',
    'results',
    'results.answer',
    'survey',
    'survey.questions',
    'survey.questions.question',
    'survey.questions.question.answers',
    'manager'
))->findByPk($id);

我想确保survey.questions关系仅返回不同的记录。但看起来,我似乎没有办法实现这一目标(或者我是盲人/没有受过足够的教育)。

将关系表名称/别名指定为数组时:

'results.question'=>array('alias'=>'results_question'),

the distinct key is not among those, that can be used in such array (as modifier).

我尝试了将select从默认*更改为DISTINCT *的非常丑陋,坎坷的方式:

'survey.questions'=>array('select'=>'distinct'),

但这(当然?)失败了:

Active record "SurveysQuestions" is trying to select an invalid column "distinct". Note, the column must exist in the table or be an expression with alias.

如果可以这样做(使用with()),我怎样才能实现这一点(看起来如此明显和简单)?如果没有,那么 - 请,建议如何在关系表中以任何方式获取不同的记录(除了使用foreach手动过滤结果,我现在正在做什么,以及什么是丑陋的)。

1 个答案:

答案 0 :(得分:1)

您可以将CDbCriteria::distinct设置为true:

'survey.questions'=>array('distinct'=>true),