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

SQL不在使用查询生成器laravel的GROUP BY中

乜承嗣
2023-03-14

这是通过mysql成功执行的查询:

select count(product_id) as total, `v`.*, `p`.`name` from `votes` as `v` left join `products` as `p` on `p`.`id` = (select p1.id from products as p1 where v.product_id = p1.id ) group by v.product_id

这是一个查询laravel,我使用查询生成器:

$count = DB::table('votes as v')->leftJoin('products as p',function($join){
  $join->on('p.id','=',DB::raw('(select p1.id from products as p1 where v.product_id = p1.id )'));
})->select(DB::raw('count(*) as total'),'v.*','p.name')->groupBy('v.product_id')->get();
dd($count);

我得到了这个错误:

"SQLSTATE[42000]:语法错误或访问冲突:1055'lookbubbledrink.v.id'不在GROUP BY(SQL:选择Count()作为总数,v.,p.代码>作为v左加入产品作为p上的p。########################################################################################################################################################

我只需要使用group by product_id来根据投票中product_id的数量计算数据量。

共有1个答案

苏健柏
2023-03-14

您在laravel中使用的是严格模式。到目前为止,您可以根据自己的需要进行调整。

在set中配置database.php

  'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'strict' => false,
            'engine' => null,
        ],
 类似资料:
  • 我对雄辩有一个奇怪的问题,我试图做到以下几点: Laravel Framework报告一个错误: Connection.php第761行中的QueryException:SQLSTATE[42000]:语法错误或访问冲突:1055“permission.id”不在GROUP BY中(SQL:选择,作为,

  • 我有下面的模式, 学生(名字、姓氏、SID) 已注册(学生ID、课程ID) 课程(CID、课程名称、系) 我需要找出哪些学生上的课比课多。和位位于类别中。我有以下查询,其中列出了所有注册课程的学生以及他们注册了多少课程。 不太确定如何将这个数字与那些注册信息技术课程的人进行比较。

  • 我一直在理解Laravel查询生成器和纯SQL之间的融合。 我有2张桌子: user:包含具有主键的用户 User_Action:这是一个表,其中包含由和动作的组成的PRIMARYs记录。 ex: 使用者 用户操作 我的需要: 现在我想检索一个用户列表,其中包含每个用户的最新操作。因此,我只需要在从到的连接中获取一行,并且这一行必须是具有最新日期时间的一行。我的前任也是如此;我只想获取dateti

  • 我变得非常困惑,我试图通过laravels query builder运行一个应该可以工作的查询,但它会抛出奇怪的错误。

  • 有一个典型的我与邮政 职位模型: 迁移后: 评论模型: 评论迁移: 我想在拉威尔使用渴望加载。 例如我怎样才能使用“急切加载”获得他最近评论的所有帖子? 我试过这个: 但像这样,我得到了所有的评论。需要帮忙吗? 最好的问候 编辑: Foreach语句(Blade):

  • 我有一个问题,使laravel查询: 我想举个例子: 我有这个但不起作用: