У меня проблема. Таблица (в Postgresql DB) выглядит так:
+----------+----------------+---------------------+----+
| fullname | formattedvalue | recordTime | ID |
+----------+----------------+---------------------+----+
| text1 | 170 | 09/02/2020 21:45:00 | 1 |
+----------+----------------+---------------------+----+
| text2 | 24 | 09/02/2020 21:45:00 | 2 |
+----------+----------------+---------------------+----+
| text1 | 171 | 08/02/2020 21:30:00 | 3 |
+----------+----------------+---------------------+----+
| text2 | 25 | 08/02/2020 21:30:00 | 4 |
+----------+----------------+---------------------+----+
Это моя функция getdata:
function getdata(Request $request)
{
$start_date = date('d/m/Y 08:00:00', strtotime("yesterday"));
$end_date = date('d/m/Y 08:00:00');
if($request->start_date != '' && $request->end_date != '')
{
// if user fill dates
$dateScope = array($request->start_date, $request->end_date);
} else {
// default load page - today
$dateScope = array($start_date, $end_date);
};
$students = mymodel::whereBetween('recordtime', $dateScope)
->selectRaw('recordtime')
->selectRaw('max(formattedvalue) filter (where fullname = \'Text1\') as nivo600')
->selectRaw('max(formattedvalue) filter (where fullname = \'Text2\') as razhod600')
->where(function ($query) {
$query->where('fullname', 'like', "Text1")
->orWhere('fullname', 'like', "Text2");
})
->groupBy('recordtime')
->orderBy('recordtime')
->get();
return Datatables::of($students)
->addColumn('action', function($student){
return '
<a href="#" class="btn btn-xs btn-primary edit" id="'.$student->recordtime.'">
<i class="glyphicon glyphicon-edit"></i>
Редактирай
</a>
<a href="#" class="btn btn-xs btn-danger delete" id="'.$student->recordtime.'">
<i class="glyphicon glyphicon-remove"></i>
Изтрий
</a>
';
})
//->addColumn('checkbox', '<input type="checkbox" name="student_checkbox[]" class="student_checkbox" value="{{$id}}" />')
->rawColumns(['checkbox','action'])
->make(true);
}
После запроса таблица преобразуется следующим образом:
+---------------------+-------+-------+
| recordtime | text1 | text2 |
+---------------------+-------+-------+
| 09/02/2020 21:45:00 | 170 | 24 |
+---------------------+-------+-------+
| 09/02/2020 21:30:00 | 171 | 25 |
+---------------------+-------+-------+
И функция fetchdata при нажатии пользователем кнопки редактирования:
function fetchdata(Request $request)
{
$student = mymodel::where('recordtime', $request->input('recordtime'))->first();
$output = array(
'recordtime' => $student->recordtime,
'fullname' => $student->fullname,
'formattedvalue' => $student->formattedvalue,
'author' => Auth::user()->name
);
echo json_encode($output);
}
Проблема в том, что при нажатии кнопки редактирования отображается сообщение об ошибке:
message: "Trying to get property 'recordtime' of non-object", exception: "ErrorException",…}
Проблема пропал, если я использую id="'.$student->id.'"
вместо id="'.$student->recordtime.'"
Но когда я использую id
, он должен быть в GroupBy
для работы, в результате чего таблица будет отображаться так:
+---------------------+-------+-------+
| recordtime | text1 | text2 |
+---------------------+-------+-------+
| 09/02/2020 21:45:00 | 170 | - |
+---------------------+-------+-------+
| 09/02/2020 21:45:00 | - | 24 |
+---------------------+-------+-------+
| 09/02/2020 21:30:00 | 171 | - |
+---------------------+-------+-------+
| 09/02/2020 21:30:00 | - | 25 |
+---------------------+-------+-------+
Редактирование работает хорошо, но эта визуализация таблицы не вариант. Есть идеи, как решить проблему?