当前位置: 首页 > 知识库问答 >
问题:

Laravel生成的SQL不起作用,但如果我在PhpMyAdmin上直接运行SQL,它就起作用了

秦时铭
2023-03-14

我试图获取系统中用户的名称,并且在PHP Laravel上使用以下代码:

$course_assessments = CourseAssessment::where('canvas_assignment_id', '=', $canvas_assignment_id)
        ->join('assessment_submissions', 'assessment_submissions.courses_assessments_id', '=', 'course_assessments.id')
        ->join('users', 'users.id', '=', 'assessment_submissions.evaluated_user')
        ->groupby('users.name')
        ->get();

当我运行代码时,我得到以下错误:

SQLSTATE[42000]: Syntax error or access violation: 1055 'laravel.course_assessments.id' isn't in GROUP BY (SQL: select * from `course_assessments` inner join `assessment_submissions` on `assessment_submissions`.`courses_assessments_id` = `course_assessments`.`id` inner join `users` on `users`.`id` = `assessment_submissions`.`evaluated_user` where `canvas_assignment_id` = 248302 group by `assessment_submissions`.`evaluated_user`)

但如果我从上面的错误中得到SQL代码:

select * from `course_assessments` inner join `assessment_submissions` on `assessment_submissions`.`courses_assessments_id` = `course_assessments`.`id` inner join `users` on `users`.`id` = `assessment_submissions`.`evaluated_user` where `canvas_assignment_id` = 248302 group by `assessment_submissions`.`evaluated_user`

并且我在PhpMyAdmin上运行代码,它工作的代码,但向我显示以下警告消息:

Current selection does not contain a unique column. Grid edit, checkbox, Edit, Copy and Delete features are not available. 

我怎么能在拉拉维尔身上修好呢?

共有1个答案

邬弘化
2023-03-14

使用group BY对行进行分组时,数据库不知道应选择哪一行。您必须明确地告诉数据库要显示哪一行,例如,first(name)将选择列名的第一行。

GROUP BY中的列除外,该列将是唯一的。

因此在查询中,select*将不起作用,您应该添加select()并指定字段和聚合函数。

        ->select('users.name', DB::raw('FIRST(course_assessments.field_name)'))

users.name在GROUP BY中,所以不需要聚合函数,其他字段需要聚合函数

 类似资料:
  • 问题内容: 我在下面使用此代码,它在Android 2.3.3中完美运行。但是,在4.0+中,它无法以某种方式连接到数据库。我看到了一些有关您需要上急课的帖子。我也尝试过,但似乎无法正常工作。我可能用错了,但我很难理解。 Logcat错误(4.0及更高版本): 只有第一个错误行很重要,因为它无法连接到数据库,它给出了nullPointer(第二个和第三个错误)。 这是我在Asynch中尝试过的:

  • 问题内容: 我有两个数据库,一个数据库保存库存,另一个数据库包含主数据库记录的子集。 以下SQL语句不起作用: 不在中不起作用。删除NOT会给出正确的结果,即两个数据库中都有产品。但是,使用NOT IN根本不会返回任何结果。 我在做什么错,有什么想法吗? 问题答案: SELECT foreignStockId FROM [Subset].[dbo].[Products] 可能会传回。 一如有查询将

  • 我目前正在使用php。我想将PHP与sql服务器连接,但它不能在生产服务器上工作。它在我的本地机器上工作得很好,因为我在php的扩展文件夹中安装了sql服务器驱动程序,并在php-ini文件中激活了它。我确认驱动程序已经加载到生产驱动程序中,因为它托管在windows服务器中,而不是linux服务器中。我需要帮助,因为相同的脚本,我连接我的本地机器到云sql服务器是相同的脚本,我现在使用连接PHP

  • 我有一种字体在IE8和IE9以及所有其他浏览器中都能正常工作,但第二种字体只在IE9和其他浏览器中工作。在IE8中,我得到了一个错误: “CSS3111:@font-face遇到未知错误。” 我一直在四处看书,尝试了很多事情,但都没有运气。 我的代码是: 我试过用几个不同的生成器多次重新生成eot,玩过CSS,玩过头,玩过域,等等,但是看起来它们都很好。如前所述,相同的代码在相同的,只是指向不同的

  • 问题内容: 您可以运行此命令并告诉我为什么结果集只有两行吗?它应该有三个,看起来像这样… 这是sql,因此您可以将其粘贴到查询工具中 我无法弄清楚为什么#appSteps中的所有3个非空行都没有返回 问题答案: 原因是因为您在子句中包含了右侧表。您应该将其移至以下条件: 这样做的原因是,该子句是 在后面 进行评估的,然后从中过滤出您的结果。 在子句中包含的右手表(或的左手表)可将转换为。

  • 注意:下面是对类似帖子/问题的编辑/修订,试图更好地识别我的问题/问题,并提供更好的代码示例来演示我的问题。 添加注意:代码示例已修改为包括工作代码。 我在同一个spring reactive应用程序中的两台路由器中有两个endpoint。第一个(/v2/demopojo)似乎可以正常工作。第二个(/v2/democlient/demopojo),使用WebClient委托给/v2/demopoj