Если limit
и channel
являются необязательными сегментами URL в вашем маршруте, ваше приложение не будет знать, что вы намереваетесь заполнить переменную channel
, если отсутствует limit
. Он примет это за limit
.
. В вашем случае лучше всего передать их как GET
параметры, проверяя в вашем контроллере, заполнены ли они.
Во-первых, измените ваш маршрут, чтобы исключить необязательные параметры:
Route::get('/videos', VideosController@index);
Затем в вашем контроллере:
public function index()
{
if (request()->has('channel'))
{
$channel_id = channel::where('name', request('channel'));
$result =
<some complicated DB query>
->where('channel_id', $channel_id)
->limit(request('limit', 20))
->first();
} else {
$result =
<some complicated DB query>
->limit(request('limit', 20))
}
}
Затем, например, запрос будет /videos?channel=example&limit=30
.
Помощник request()
позволяет установить значение по умолчанию, если параметр был передан. Обычно вы видите запрос, переданный в контроллере, так что вы можете получить то же самое с помощью $request->query('limit', 20)
.
Надеюсь, это поможет.