【问题标题】:laravel query - join 2 table and groupBy same IDlaravel 查询 - 加入 2 个表和 groupBy 相同的 ID
【发布时间】:2021-08-06 07:30:50
【问题描述】:

我有两张这样的桌子

表Base_infos

| id |base_name|
+----+---------+
|  1 |   name1 |
|  2 |   name2 |
|  3 |   name3 |
|  4 |   name4 |
|  5 |   name5 |
|  6 |   name6 |

表基类型

+----+---------+---------+
| id |  base_id|     type|
+----+---------+---------+
|  1 |       1 |       1 |
|  2 |       2 |       0 |
|  3 |       3 |       1 |
|  4 |       4 |       0 |
|  5 |       5 |       1 |
|  6 |       6 |       1 |
|  7 |       6 |       0 |

我的查询是这样的

$datas = DB::table('base_infos')
    ->select('base_infos.id as id', 'base_infos.base_name', 'base_types.type')
    ->join('base_types', 'base_infos.id', '=', 'base_types.id')
    ->groupBy('base_infos.id')
    ->get();

但是数据只返回这样的表base_types的第一条记录

  • 'id':'6'
  • 'base_name':'name6'
  • '类型':'0'

如何在一行中显示所有类型?我正在使用 Laravel 7 和 mysql

【问题讨论】:

  • 您的加入条件似乎也有误。
  • base_id 列的意义何在? (提示)

标签: php mysql laravel laravel-7 laravel-query-builder


【解决方案1】:

为什么需要groupBy('base_infos.id')? id 不是唯一的,如果是这样,您就不需要该分组。

【讨论】:

  • 我需要合并 base_infos 表的 id 相同的行,这就是我使用 groupBy 的原因
【解决方案2】:

您是否管理模型中的关系?
如果你已经在模型中设置了关系,你可以使用这个方法来合并/GroupBy关系之间
我用了这个方法,效果很好

// Displays the most purchased items [ TAMPIL ]
    $most_item_buy = Item::with(["item_orders" => function($query) {
        $month = date('m');
        $year = date('Y');

        $query->selectRaw('*, sum(item_order_details.quantity) as total_item');
        $query->groupBy('pivot_item_id');
        
        $query->where("order_status", "=", "FINISH");
        $query->whereMonth("item_orders.created_at", $bulan);
        $query->whereYear("item_orders.created_at", $tahun);

    }, "item_images"])
        ->withTrashed()
        ->get();

【讨论】:

  • 我确实有模特关系,谢谢。我解决了我的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-22
  • 1970-01-01
  • 2014-06-05
  • 2016-10-30
  • 2020-10-16
  • 1970-01-01
相关资源
最近更新 更多