Я делаю приложение для управления проектами в Larvel. TaskController @ index запрашивает базу данных и возвращает задачи. Чтобы быть эффективным и элегантным, я хочу иметь возможность передавать несколько необязательных пар ключ / значение в URL-адресе, например / tasks / org_id / 36 / status / open или / tasks / proj_id / 1557 / status / closed, и пусть он возвращает задачи, основанные на этих переменных. Мой код ниже, но проблема в том, чтобы получить маршрут, чтобы иметь возможность получить необязательные пары ключ / значение. Кроме того, не все должны быть представлены все время, если они не нужны.
Маршрут / web.php:
Route::get('/tasks/status/{status}/proj_id/{proj_id}/user_id/{user_id}/org_id/{org_id}
/creator_id/{creator_id}', 'TaskController@index')->name('tasks.index');
Route::resource('tasks', 'TaskController')->except([
'tasks.index'
]);
Контроллер:
class TaskController extends Controller
{
public function index($proj_id = null, $recipient_id = null, $org_id = null, $creator_id = null, $status = null)
{
$tasks = Task::where('recipient_id', auth()->user()->id)
->when($status, function ($query, $status) {
return $query->where('status', $status);
})
->when($recipient_id, function ($query, $recipient_id) {
return $query->where('recipient_id', $recipient_id);
})
->when($public, function ($query, $public) {
return $query->where('public', $public);
})
->get();
return view('tasks.index', compact('tasks'));
}
Как мне получить маршрут, чтобы можно было принимать различные необязательные пары ключ / значение?