mysql - 我可以强制 Yii 在生成的 SQL 中使用特定的别名吗

标签 mysql activerecord yii relational-database alias

我正在使用带有 with() 语句的 CActiveRecord 检索我的记录:

Probes::model()->with(array
(
    'user',
    'results',
    'results.answer',
    'survey',
    'survey.questions'
))->findByPk($id)

我想在 survey.questions 关系的 question_id 字段上使用 GROUP BY,所以我将上面的内容更改为:

'survey.questions'=>array('group'=>'survey.questions.question_id'),

这导致了 SQL 异常 1054 Unknown column。但是,通过分析附带的 SQL 代码:

`questions`.`question_id` AS `t6_c2`

我设法发现,我必须使用 t6_c2 别名(由 Yii 自动生成?)。因此,另一个更改为:

'survey.questions'=>array('group'=>'t6_c2'),

问题就解决了。

但是,话又说回来,别名 t6_c2 对我来说似乎相当……“不稳定”(自动生成?)。我可以强制 Yii 在这部分生成的 SQL 中使用我提供的其他别名吗?或者我能有多确定,这部分 SQL 代码不会在下一代(以后的一些)中发生变化?或者 -- 是否有任何其他方法可以实现我想要实现的目标?

最佳答案

你可以为你的关系分配别名

,
'survey.questions'=>array(
    'alias' => 'surq'
    'group'=>'surq.question_id',
),

阅读this this了解更多信息

关于mysql - 我可以强制 Yii 在生成的 SQL 中使用特定的别名吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23304409/

相关文章:

mysql - 如何将表与其自身进行比较并在某一列中获取具有相同数据的行?

mysql - PyCharm 无法使用 peewee 连接到 MySQLDatabase

ruby - 为什么我的 has_many through 关联记录(有时)是只读的?

ruby-on-rails - Rails - 未定义方法 `username' for nil :NilClass

c++ - 想在 Qt 中存储配置文件,使用 SQLite 或其他东西?

mysql - 在 docker 容器中将 tomcat 连接到 mysql 时遇到问题?

MySQL:增加 GROUP_CONCAT_MAX_LEN 参数 - 有什么危险吗?

Yii 最小值或空的验证规则

design-patterns - 在适当的 MVC 中,一切都必须是模型、 View 或 Controller 吗?

Yii 框架 : Specifying defaultScheme in URL Validator