Laravel-url参数之后?
在Laravel中,我希望能够通过id或名称搜索用户 我有以下路线: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
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表中,因此仍会呈现多个结果,但我只是想知道最佳做法。