LiveWire PowerGrid: Initial `user_id` filterkonflikte mit typed` user_name` filter
Posted: 19 Aug 2025, 15:15
Ich verwende livewire powerGrid und möchte nur die Datensätze des aktuellen Benutzers zum ersten Last anzeigen. Ermöglichen Sie jedoch das Filtern mit dem Benutzernamen.
Filter:
Problem:
Bei der anfänglichen Last endet die Abfrage user_id = auth ()-> id () , was korrekt ist. auth ()-> id () , der 0 Ergebnisse zurückgeben kann, wenn der Name nicht zum aktuellen Benutzer gehört. Typisiert? < /p>
Code: Select all
public function datasource(): Builder
{
return Worklog::query()
->when($this->task_code, function ($query) {
$query->where('projects_tasks.code', $this->task_code);
})
->when(auth()->user()->is_admin !== 1, function ($query) {
$query->where('user_id', auth()->id());
})
->leftJoin('projects_tasks', 'projects_tasks.id', '=', 'worklogs.task_id')
->leftJoin('projects', 'projects.id', '=', 'projects_tasks.project_id')
->leftJoin('users', 'users.id', '=', 'worklogs.user_id')
->select('worklogs.*', 'projects.name', 'users.name as user_name', 'projects.id as project_id');
}
Code: Select all
public function filters(): array
{
$filters = [
Filter::inputText('user_name', 'users.name')
->operators(['contains','contains_not','starts_with','ends_with']),
Filter::boolean('billable','worklogs.billable')
->label('Yes', 'No'),
Filter::datetimepicker('date', 'date'),
];
if (!$this->task_code) {
$filters[] = Filter::inputText('name', 'projects.name')
->operators(['contains','contains_not','starts_with','ends_with']);
}
return $filters;
}
Bei der anfänglichen Last endet die Abfrage user_id = auth ()-> id () , was korrekt ist. auth ()-> id () , der 0 Ergebnisse zurückgeben kann, wenn der Name nicht zum aktuellen Benutzer gehört. Typisiert? < /p>