【问题标题】:How to hide repetitive data Laravel如何隐藏重复数据 Laravel
【发布时间】:2019-03-07 19:15:39
【问题描述】:

你好我有这个功能

 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'
    )
    ->get();


    return $TableB1;

   }

它返回这样的数据:

[{"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}]

如您所见,我有 2 个 Mohamed Adel 对象如何隐藏它们
或者如何正确查询,这样我就不会每次都重复

我编辑了函数

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();

我收到此错误:https://ibb.co/FqPd1Wz

【问题讨论】:

  • 简单使用groupBy('name')
  • 你可以使用distinct()
  • 如何在我的代码中使用 distinct()?

标签: php mysql laravel


【解决方案1】:

您可以简单地将groupBy 与查询生成器一起使用

    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.name')
        ->get();
        return $TableB1;
    }

你可以阅读更多关于groupByhere的信息

【讨论】:

  • 我认为最好使用ID,而不是同音异义的名称
  • 非常感谢您的回答我试过了,但我收到此错误语法错误或访问冲突:1055 'sedracrm.users.name' is not in GROUP BY (SQL: select users.name
  • @Saromase 我根据他的输出提供了解决方案,答案对您和我的都适用
  • @AnkurTiwari,当然,两个答案都很好,但这只是一个提示。
  • @mohamedadel 更新后您可以在这里发布您的查询
【解决方案2】:

你需要像这样使用groupBy 方法:

->groupBy('group_user.user_id')

查看此文档链接Laravel Query Builder Group By

【讨论】:

  • 非常感谢您的回答我试过了,但我收到了这个错误语法错误或访问冲突:1055 'sedracrm.users.name' is not in GROUP BY (SQL: select users .name
  • @mohamedadel 你能用新的请求更新你的问题吗,请出错。谢谢
  • 完成任何帮助将不胜感激
猜你喜欢
  • 2016-01-17
  • 1970-01-01
  • 2021-09-27
  • 2022-01-14
  • 2017-02-18
  • 2019-08-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-23
相关资源
最近更新 更多