我想为auth用户附加一个值
auth()->user() OR Auth::user()
仅适用于当前登录的会话。 (即他们注销或auth会话到期,价值丢失)。
Auth::user()->isTheOne = true;
以上代码仅适用于当前请求,并且不会在进一步的请求中保留。我怎样才能做到这一点。因此,当我尝试从同一用户的不同请求访问上述代码时,它不会显示null?
答案 0 :(得分:1)
如果您希望在会话期间保留数据,则需要使用Laravel提供的会话门面。一个简单的例子是
// Via a request instance...
$request->session()->put('key', 'value');
// Via the global helper...
session(['key' => 'value']);
有关会话和Laravel read the documentation here的更多信息。
答案 1 :(得分:1)
您可以在用户的课程中添加isTheOne
功能:
public function isTheOne() {
session(['is_the_one' => true]);
}
然后在Controller或其他地方调用您的方法:
Auth::user()->isTheOne();
修改强>
根据你的评论,如果你想要更通用的东西,你可以尝试:
public function __set($key, $value) {
session([$key => true]);
parent::__set($key, $value);
}
因此,每当您拨打Auth::user()->isTheOne = true;
或类似内容时,都会将其记录到会话中。这对我来说似乎很奇怪,但如果它是你想要的,那么(也许我误解了一些东西)。
答案 2 :(得分:0)
我认为你可以设置会话,
public function postUpdate(Request $request) {
if ($request->session()->has('user') {
$user = $request->session()->get('user');
} else {
$user = Auth::user();
$user->isTheOne = true;
$request->session()->put('user', $user);
}
}