Как сделать ответ JSON Groupby и получить все значения сгруппированы - PullRequest
0 голосов
/ 19 октября 2018

Как получить данные, сгруппированные и получить все значения данных в массиве

пример

id name    date       public
1  hi   2018-10-19    true
2  hai  2018-10-20    true
3  bye  2018-10-19    true

чем я хочу сделать ответ JSON, как

data:{
"2018-10-19": [
  {
     "name": "hi",
     "public": true
  },
  {
     "name": "bye",
     "public": true
  }
 ],
 "2018-10-20": [
  {
     "name": "hai",
     "public": true
  }
 ],
}

я пытаюсьthis

$ data = DB :: table ('calendar') -> select ('date') -> groupBy ('date') -> orderBy ('date', 'asc')-> get ();

    return response()->json(['status'=>'success','data'=>$data]);

Ответы [ 3 ]

0 голосов
/ 19 октября 2018

попробуйте

$data = DB::table('calendar')->orderBy('date','asc')->get()->groupBy('date')->toArray();
0 голосов
/ 19 октября 2018

Вы можете использовать groupBy в запросе laravel:

public function calendar($id)
{
  #Calendar is a model name. 
  #data is relationship in Calendar model.

  $calendar = Calendar::whereHas('data', function ($query) use($id) {
    $query->where('id',$id);
  })->get()->groupBy(column_name_you_want_to_group_by);
    return response()->json([$calendar],200);
}
0 голосов
/ 19 октября 2018

вы можете использовать groupBy в коллекции Laravel.

// retch the data from the databse as a collection.
$data_collection_from_the_database = ....;

// to group by date
$grouped_collection = $data_collection_from_the_database->groupBy->date;

// to get json
$grouped_collection->toJson();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...