Laravel - параметры URL после? - PullRequest
       1

Laravel - параметры URL после?

0 голосов
/ 19 сентября 2018

в Laravel, я хочу иметь возможность искать пользователя по идентификатору или по имени.

У меня есть следующий маршрут:

Route::get('/user/{id}', 'UserController@getUserById')->name('user_by_id');

, который в браузере выглядит следующим образом:

http://localhost:8000/user/1

Как видите, по URL невозможно определить, является ли переданное значение идентификатором или именем.

Итак, я спрашиваю, вероятно, параметры URL после ? symbol.

Я хочу получить следующие URL-адреса:

http://localhost:8000/user?id=1
http://localhost:8000/user?name=hans

, но я никогда не встречал людей, упоминающих эту проблему.

Возможно ли это?Если нет, или это не лучшая практика, как с этим справиться?

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

Вы можете создать маршрут, в котором вы получите переменную id и сделаете предложение where для идентификатора и имени.

public function getUserById(Request $request, $id){
    $users = User::where('name', $id)->orWhere('id', $id')->get();
}

Если вы хотите использовать параметры URL, вы также можете использоватьфункция $request->input().

http://localhost:8000/user?id=1&name=milo

public function getUserById(Request $request){
    $id = $request->input('id');
    $name = $request->input('name');
}
0 голосов
/ 19 сентября 2018

Я не знаю, будет ли это лучшей практикой, но что-то вроде этого должно сработать:

public function getUserById($id)
{  
    $user = User::where('id', $id)->orWhere('name', $id)->first();

    $data['user'] = $user;

    return view('...',  $data);
}

Редактировать , теперь я знаю, что это индекспосмотреть .. вы также можете сделать следующее:

Изменить свой маршрут на:

Route::get('/user', 'UserController@getUserById')->name('user_by_id');

Теперь вы можете использовать маршрут как http://...user?id=1&name=someSome

Я бы изменилимя функции, но это зависит от вас ...

public function getUserById()
{
    $q = User::query();

    if($request->id){
        $q->where('id', $request->id);
    }

    if($request->name){
        $q->where('name', $request->name);
    }

    $data['users'] = $q->get();

    return view('...',  $data);
}

Примите во внимание, что это вернет все, если параметр не установлен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...