Laravel-url参数之后?

Laravel-url参数之后?,laravel,Laravel,在Laravel中,我希望能够通过id或名称搜索用户 我有以下路线: Route::get('/user/{id}', 'UserController@getUserById')->name('user_by_id'); 浏览器中的哪个选项如下所示: http://localhost:8000/user/1 如您所见,从url无法确定传递的值是id还是名称 所以,我想要的可能是?符号后的url参数 我希望有以下URL: http://localhost:8000/user?id=1 h

在Laravel中,我希望能够通过id或名称搜索用户

我有以下路线:

Route::get('/user/{id}', 'UserController@getUserById')->name('user_by_id');
浏览器中的哪个选项如下所示:

http://localhost:8000/user/1
如您所见,从url无法确定传递的值是id还是名称

所以,我想要的可能是
符号后的url参数

我希望有以下URL:

http://localhost:8000/user?id=1
http://localhost:8000/user?name=hans
但我从来没有发现有人提到过这个问题

这可能吗?
如果不是,或者这不是最佳做法,如何正确处理?

我不知道这是否是最佳做法,但类似的做法应该可以做到:

公共函数getUserById($id)
{  
$user=user::where('id',$id)->或where('name',$id)->first();
$data['user']=$user;
返回视图(“…”,$data);
}

编辑,现在我知道是索引视图。。您还可以执行以下操作:

将路线更改为:

Route::get('/user', 'UserController@getUserById')->name('user_by_id');
现在您可以使用类似
http://...user?id=1&name=someSome

我想更改函数名,但这取决于您

公共函数getUserById()
{
$q=用户::查询();
如果($request->id){
$q->where('id',$request->id);
}
如果($request->name){
$q->where('name',$request->name);
}
$data['users']=$q->get();
返回视图(“…”,$data);
}

考虑到在没有设置任何参数的情况下,这将返回所有内容

我不知道这是否是最佳做法,但类似这样的操作应该可以做到:

公共函数getUserById($id)
{  
$user=user::where('id',$id)->或where('name',$id)->first();
$data['user']=$user;
返回视图(“…”,$data);
}

编辑,现在我知道是索引视图。。您还可以执行以下操作:

将路线更改为:

Route::get('/user', 'UserController@getUserById')->name('user_by_id');
现在您可以使用类似
http://...user?id=1&name=someSome

我想更改函数名,但这取决于您

公共函数getUserById()
{
$q=用户::查询();
如果($request->id){
$q->where('id',$request->id);
}
如果($request->name){
$q->where('name',$request->name);
}
$data['users']=$q->get();
返回视图(“…”,$data);
}

考虑到如果没有设置任何参数,这将返回所有内容

您可以创建一个路由,在其中获取
id
变量,并对id和name执行
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');
}

您可以创建一个路由,在其中获取
id
变量,并对id和name执行
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');
}

快速提示,您可以将
get()->first()
替换为
first()
get()
返回一个集合,在该集合上调用
first()
函数,在查询上直接调用
first()
会更改实际的sql查询,并且只获取第一个结果,这也是内存占用较少的结果。谢谢,我考虑过类似的事情,但是如果多个数据库字段具有相同的值呢?你知道,如果我想用名字或姓氏来搜索的话。这将返回第一个用户,但会有来自数据库的多个结果…这是什么类型的视图,列表/索引?或者数据/显示视图?如果这是“显示”视图,我不会使用此方法,我将始终使用ID。。。但如果这是某种索引,您可以只使用
get()
…我希望数据位于html表中,因此仍会呈现多个结果,但我只是想知道最佳做法。快速提示,您可以将
get()->first()
替换为
first()
get())
返回一个集合,在该集合上调用
first()
函数,直接在查询上调用
first()
会更改实际的sql查询,只获取第一个结果,这也会减少内存占用。谢谢,我考虑过类似的问题,但是如果多个数据库字段具有相同的值,该怎么办?你知道,如果我想用名字或姓氏来搜索的话。这将返回第一个用户,但会有来自数据库的多个结果…这是什么类型的视图,列表/索引?或者数据/显示视图?如果这是“显示”视图,我不会使用此方法,我将始终使用ID。。。但如果这是某种索引,您可以只使用
get()
…我希望数据位于html表中,因此仍会呈现多个结果,但我只是想知道最佳做法。