php - Controller Laravel, filter data user Auth Table
In MySQL I have several user data, I need to filter the data automatically with the user who logged into the system. Below is a part of the code in the controller:
//executa a query
$lista = Ponto::with('name')->where('name', Auth::name() )
->get();
(MySql) Table ponto / structure:
id
name
cpf
cargo
data_inicial
hora_inicial
ref_hora_inicial
ref_hora_final
data_final
hora_final
created_at
updated_at
28
Arecelino Soares
012.213.564-80
Motorista
2021-11-18
16:22
17:12
17:12
2021-11-30
22:30
2021-11-09 19:23:55
2021-11-16 12:34:30
77
Robison Santos
132.321.432-43
Motorista
2021-11-16
12:57
NULL
NULL
NULL
NULL
2021-11-16 15:55:09
2021-11-16 15:55:09
complement: Table Laravel, Users data
Answer
Solution:
I managed to do it this way but it no longer filters the dates in the form?
$lista = Ponto::where('name', Auth::user()->name)->get();
public function dados(Request $request)
{
if ($request->input('data_inicial')) {
$data['data_inicial'] = $request->input('data_inicial');
$request->session()->put('data_inicial', $request->input('data_inicial'));
} elseif ($request->session()->has('data_inicial')) {
$data['data_inicial'] = $request->session()->get('data_inicial');
} else {
$data['data_inicial'] = null;
}
if ($request->input('geral')) {
$request->session()->forget('data_inicial');
$data['data'] = null;
}
$date = $data['data_inicial'];
$lista = Ponto::
when($date, function ($query, $date) {
return $query->where('data_inicial', $date);
})
->orderBy('data_inicial', 'DESC')->get();
$lista = Ponto::where('name', Auth::user()->name)->get();
$data['lista'] = $lista;
foreach ($lista as $item) {
if ($item->data_inicial) {
$dd = explode("-", $item->data_inicial);
$ddc = $dd[2] . "/" . $dd[1] . "/" . $dd[0];
$item->data_inicial = $ddc;
}
if ($item->data_final) {
$dd = explode("-", $item->data_final);
$ddc = $dd[2] . "/" . $dd[1] . "/" . $dd[0];
$item->data_final = $ddc;
}
}
return view('dados', $data);
}
Source