我继续我的冒险与Laravel 5.1。我有一个小项目,我正在工作,我正在寻找一个很好的方式来加载一个用户的壁虎理想的没有用户id在URI。
这是我当前的URI,它是这样工作的:
Route::get('gecko/{user_id}/{name}', 'GeckoController@show');
正如你所看到的,我在URI中持有用户id,然后我正在查询它以找到正确的壁虎。如下所示:
public function show($user_id, $name)
{
$name = str_replace('-', ' ', $name);
$gecko = Gecko::where(compact('user_id', 'name'))->first();
return view('gecko.show', compact('gecko'));
}
所以要让这个工作,我会做project.dev/gecko/1/Zilly
-它工作,但有用户ID在那里有点糟糕。我认为拥有User ID很重要,以防有多个用户拥有相同名称的壁虎。
任何帮助都是非常感激的,如果你需要任何额外的代码,请告诉我:)
安迪如果您想使用username而不是user_id:
路线:
Route::get('gecko/{username}/{geckoname}', 'GeckoController@show');
控制器:
public function show($username, $geckoname) {
$user_id = User::where('username', $username)->first()->id;
$geckoname = str_replace('-', ' ', $geckoname);
$gecko = Gecko::where(compact('user_id', 'geckoname'))->first();
return view('gecko.show', compact('gecko'));
}
如果用户身份验证,您可以使用Auth::user()->id
,并且您应该只添加gecko id。
路线:
Route::get('gecko/{gecko_id}', 'GeckoController@show');
控制器:
public function show($id) {
$gecko = Gecko::find($id)->where('user_id', Auth::user()->id)->first();
return view('gecko.show', compact('gecko'));
}
如果您想使用geckoname
:
路线:
Route::get('gecko/{geckoname}', 'GeckoController@show');
控制器:
public function show($geckoname) {
$gecko_id= Gecko::where('geckoname',$geckoname)->first()->id;
$gecko = Gecko::find($gecko_id)->where('user_id', Auth::user()->id)->first();
return view('gecko.show', compact('gecko'));
}