【问题标题】:How to hide repetitive data while retrieving data from database如何在从数据库中检索数据时隐藏重复数据
【发布时间】:2019-08-01 02:56:32
【问题描述】:

我有这个功能:

public function readData(){
$TableB1 = \DB::table('users')
->join('group_user', 'users.id', '=', 'group_user.user_id')
->join('groups', 'groups.id', '=', 'group_user.group_id')
->join('meetings', 'users.id', '=', 'meetings.owned_by_id')
->select(
    'users.name as name',
    'group_user.user_id as id',
    'groups.name as groupname',
    'meetings.owned_by_id as meetings'
)
->groupBy('users.id')
->get();

我得到这个错误:

当我删除 groupBy 部分时,它可以工作,但是像这样的重复数据 它返回这样的数据:

[{"name":"Mohamed Adel","id":6,"groupname":"Team Mohamed","meetings":6},{"name":"Mohamed Adel","id":6,"groupname":"Team Mohamed","meetings":6},{"name":"Norman Osborn","id":2,"groupname":"Team Mohamed","meetings":2},{"name":"Harry Osborn","id":3,"groupname":"Team Harry","meetings":3}]

谢谢。

【问题讨论】:

  • 正是错误告诉您的内容。过于简单化了,如果在select里面,肯定是在group by里面。
  • 对不起,我是新人,我不太明白。如何解决这个问题?
  • 在标准 SQL 中,您必须为分组中的所有选定字段命名,或者在 select 子句中使用 sum() 或 max() 等聚合函数。

标签: php mysql sql laravel-5 laravel-5.7


【解决方案1】:

使用这个

public function readData()
{
    $TableB1 = \DB::table('users')
        ->join('group_user', 'users.id', '=', 'group_user.user_id')
        ->join('groups', 'groups.id', '=', 'group_user.group_id')
        ->join('meetings', 'users.id', '=', 'meetings.owned_by_id')
        ->select(
            'users.id as user_id',
            'users.name as name',
            'group_user.user_id as id',
            'groups.name as groupname',
            'meetings.owned_by_id as meetings'
        )
        ->groupBy('user_id')
        ->get();

将 config\database.php 更改为

'mysql' => [
    'driver' => 'mysql',
    'host' => env('DB_HOST', 'localhost'),
    'port' => env('DB_PORT', '3306'),
    'database' => env('DB_DATABASE', 'forge'),
    'username' => env('DB_USERNAME', 'forge'),
    'password' => env('DB_PASSWORD', ''),
    'charset' => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix' => '',
    'strict' => false, // must be false
    'engine' => null
],

【讨论】:

  • 这是 MySQL 的非标准特性,还是这个框架为您做的事情?似乎这是在鼓励以错误的方式学习一些东西......(我当然希望我能在 DB2 中做到这一点)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-17
  • 2018-11-25
  • 1970-01-01
  • 2014-08-27
  • 2018-09-11
  • 1970-01-01
相关资源
最近更新 更多