1

I have data that I'm trying to groupBy a field on index function

public function index()
    {
        abort_if(Gate::denies('workstep_access'), Response::HTTP_FORBIDDEN, '403 Forbidden');
        $thisUser = Auth::user();
        $worksteps = Workstep::with(['site_id'])->where('site_id', $thisUser->site_id)->get();
        return view('admin.worksteps.process', compact('worksteps'));
    }

Adding ->groupBy('subprocess_id'); before->get(); As below

$worksteps = Workstep::with(['site_id'])->where('site_id', $thisUser->site_id)->groupBy('subprocess_id')->get();

produces error

Syntax error or access violation: 1055 'tool_db.worksteps.id' isn't in GROUP BY

Also tried

$grouped = $worksteps->groupBy('subprocess_id');
return view('admin.worksteps.process', compact('worksteps', 'grouped'));

Didn't work! Can anyone suggest a solution but without a DB query if possible?

Jessica Kimble
  • 493
  • 2
  • 7
  • 17

2 Answers2

0

without a DB query chain ->groupBy('subprocess_id') after ->get()

$worksteps = Workstep::with(['site_id'])->where('site_id', $thisUser->site_id)->get()->groupBy('subprocess_id');

kris gjika
  • 531
  • 2
  • 8
0

The solution was in database config file config/database.php

In mysql array, set strict => false to disable MySQL's strict mode only then

$worksteps = Workstep::with(['site_id'])->where('site_id', $thisUser->site_id)->groupBy('subprocess_id')->get();

Worked.

Jessica Kimble
  • 493
  • 2
  • 7
  • 17