代码之家  ›  专栏  ›  技术社区  ›  Mustafa Arslan

Laravel在关系中使用groupBy无法正常工作

  •  0
  • Mustafa Arslan  · 技术社区  · 4 年前

    可能是我的错,但我不知道我的错在哪里。

    我有一个客户模型 schedule_registers() 关系

    public function schedule_registers()
    {
        return $this->hasMany('App\Models\ScheduleRegister', 'customer_id', 'id');
    }
    

    我还有ScheduleRegister模型 teacher() 关系

    public function teacher()
    {
        return $this->belongsTo('App\Models\User', 'teacher_id', 'id');
    }
    

    我像这样在CustomerController中获取数据(我不使用 ->get() 因为我正在将这些数据发送到datatable);

    $customer_index = Customer::with([
        'company',
        'schedule_registers',
        'schedule_registers.teacher',
    ]);
    

    这个查询给了我这个输出;

    https://jsonblob.com/915606370225766400

    当我尝试使用group by teacher_id并将查询改为此时;

    $customer_index = Customer::with([
        'company',
        'schedule_registers.teacher',
        'schedule_registers' => function ($q) {
            $q->groupBy('schedule_registers.teacher_id');
        },
    ]);
    

    输出转向这个;

    https://jsonblob.com/915605962518446080

    简而言之,当我尝试使用groupBy时,我没有得到任何错误,但得到了错误的输出。如果你能检查输出,当我使用groupBy时,一些 schedule_registers 数据变为空,但有些数据变为空。

    正确的使用方法是什么 groupBy 在那种情况下?

    0 回复  |  直到 4 年前