我正在使用Laravel 5.2 ..
有一个user
和一个profile
表,它们之间是一对一的关系,
在ProfileController
,
用户登录后,
当访问create
功能时,
如果尚未创建用户的个人资料,请返回create
页面,
否则,
重定向到edit
功能。
问题:
如何编写create
函数和edit
函数?
我写了一部分
1,如何在id
函数中编写参数create
?
2,如何在edit
函数中找到登录用户的个人资料?
ProfileController可:
public function create()
{
$user = \Auth::user();
if (!$user->profile) {
return view('profile.create');
}else{
//how to write 'id'
return redirect()->action('ProfileController@edit', ['id' => .......]);
}
}
public function edit()
{
//how to find the profile of the login user?
return view('profile.edit', compact('profile'));
}
答案 0 :(得分:2)
你需要这样的东西:
public function create()
{
$user = \Auth::user();
if(isset($user->profile)) {
return redirect()->action('ProfileController@edit', ['id' => $user->id]);
}
return view('profile.create');
}
// Get the current user
public function edit(App\User $user)
{
if($user->id === \Auth::user()->id) {
$profile = \Auth::user()->profile;
return view('profile.edit', compact('profile'));
}
}
答案 1 :(得分:1)
$user = \Auth::user();
与public function create()
相同
变量$user
将包含有关当前用户的信息
你可以创建一个像
这样的构造函数方法use Illuminate\Contracts\Auth\Authenticatable;
protected $user;
public function __construct(Authenticatable $user){
// $user is an instance of the authenticated user...
$this->middleware('auth');
$this->user = $user;
}
public function edit(){
$user = $this->user;
}
阅读DOCS