Doctrine Querybuilder ORDER BY子句不在SELECT列表中

Des*_*ane 11 mysql symfony doctrine-orm

我有以下查询构建器:

$queryBuilder = $this
    ->createQueryBuilder('recipient')
    ->leftJoin('recipient.message', 'message')
    ->orderBy('message.dateSent', 'DESC');
Run Code Online (Sandbox Code Playgroud)

这一直很好:)但是因为升级到Mysql 5.7我已经开始在任何地方得到这个错误:

SQLSTATE [HY000]:
一般错误:3065 子句的
表达式#1 ORDER BY不在SELECT列表中,引用列'dctrn_result.date_sent_5'不在SELECT列表中;
这是不相容的DISTINCT

我已经在大多数使用DBAL图层的地方解决了这个问题,只需将项目添加到选择列表中,但我无法弄清楚如何使用此特定功能queryBuilder.

Ami*_*uli 22

您必须/etc/mysql/mysql.cnf通过添加以下行来编辑:

[mysqld]
sql-mode=""
Run Code Online (Sandbox Code Playgroud)

别忘了重启服务mysql:

sudo service mysql restart
Run Code Online (Sandbox Code Playgroud)

有关信息,我使用的是Ubuntu 16.04 LTS.


mic*_*doo 15

添加:

[mysqld]
sql-mode=""
Run Code Online (Sandbox Code Playgroud)

/etc/mysql/my.cnf固定我的问题(重新启动服务后).虽然官方对学说问题的回应当然会更好.

更新:比我更了解此建议的人只建议禁用导致问题的模式.