Как правило, вы не можете получить это легко, не имея 03 разделяя таблицу и используя красноречивые отношения, такие как здесь .
Но для вас случай с одной таблицей, возможно, это работает?
ThisIsModel::select(DB::raw("group_concat(distinct(group_name)) as group_name, group_concat(distinct(sub_group)) as sub_group, group_concat(title) as title"))->groupBy('sub_group', 'group_name')->get()->groupBy('group_name')->toArray();
, который дает следующий результат:
[
"Mobile Phone" => [
[
"group_name" => "Mobile Phone",
"sub_group" => "Apple",
"title" => "Iphone X,Iphone 7 Plus",
],
[
"group_name" => "Mobile Phone",
"sub_group" => "Nokia",
"title" => "XpressMusic",
],
[
"group_name" => "Mobile Phone",
"sub_group" => "Samsung",
"title" => "J6 Plus",
],
],
]
Чтобы получить листья на title
, вам просто нужно взорваться с разделителем ,
, и у вас все в одном запросе.