Я хочу добавить значение для пользователя авторизации
auth()->user() OR Auth::user()
Только для тех, кто в данный момент вошел в сеанс. (т.е. они выходят из системы или истекает сеанс аутентификации, и значение теряется).
Auth::user()->isTheOne = true;
Приведенный выше код будет работать только для текущего запроса и не будет сохраняться при последующих запросах. Как я могу этого добиться. Так что, когда я пытаюсь получить доступ к вышеуказанному коду из другого запроса с тем же пользователем, он не будет показывать ноль?
Если вы хотите сохранить данные во время сеанса, вы должны изучить использование сеансов, которые предоставляет Laravel. Простой пример будет
// Via a request instance...
$request->session()->put('key', 'value');
// Via the global helper...
session(['key' => 'value']);
Для получения дополнительной информации о сессиях и Laravel прочитайте документацию здесь.
Вы можете добавить isTheOne
функция в классе вашего пользователя:
public function isTheOne() {
session(['is_the_one' => true]);
}
Затем вызовите ваш метод в контроллере или где-то еще:
Auth::user()->isTheOne();
РЕДАКТИРОВАТЬ
Согласно вашему комментарию, если вы хотите что-то более общее, вы можете попробовать:
public function __set($key, $value) {
session([$key => true]);
parent::__set($key, $value);
}
Так что каждый раз, когда вы звоните Auth::user()->isTheOne = true;
или что-то в этом роде, это будет запись в сеанс. Это кажется мне странным, но если это то, что вы хотите, хорошо (может быть, я что-то не так понял).
Я думаю, что вы можете просто установить сеанс,
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);
}}