This question准确地描述了我想做的事情,但我想在CakePHP 2.10中做。这可能吗?通常在SQL中“展开”子表达式是可能的吗?我已经尝试了我能想到的几乎所有组合,通常都收到了
Expression #n of SELECT list is not in GROUP BY clause and contains nonaggregated column 'database.table.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
我理解为什么(有很多关于StackOverflow的解释),我想在CakePHP 2.10框架的约束下正确地修复它。我也想避免重写或重组大量现有代码,这样才能适应这种用法,所以我不想使用预准备语句或直接query()
调用。这可能吗?
1条答案
按热度按时间7ivaypg91#
假设您有一个社交媒体应用程序,其中您有用户,用户有0个或多个帖子。您想要一个包含用户最近(最高编号)帖子的用户列表,不包括没有帖子的用户。
要获取(user,post-id)对得列表,请执行以下操作:
那么你想要做的就是获取帖子的所有细节沿着它的所有者/用户。
因为
Expression #n of SELECT list is not in GROUP BY clause...
的缘故,我们都知道它不起作用。您需要写的是:我想问的是,是否有某种方法可以将查询扁平化为三向连接,因为Cake 2无法真正表达嵌套查询。我认为没有,所以下面是我的解决方法:
为了简单起见,这些都是从我的真实的代码中高度压缩下来的。如果不清楚请评论。