Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Продолжаю сражаться со всякими, призрачными хренями. Вот, изловил очередную хрень.
Есть табличка юзера, в ней все стандартно + есть поле status, которое при регистрации принимает значение inactive и поле last_visit. Есть контроллер Auth, который ловит ajax запрос на авторизацию и соответственно при успешном прохождении делает вот так:
if (Auth::attempt($credentials)) {
try {
$user = User::find(Auth::user()->id);
$user->last_visit = date('Y-m-d H:i:s', time());
$user->save();
echo 'success';
} catch (Exception $e) {
echo 'error';
exit;
}
}
Все нормально, last_visit записан, JS редиректит на страницу дэшбоарда. Там ее ловит контроллер с методом, типа:
public function action_index() {
$uid = Auth::user()->id;
if (Auth::user()->status === 'inactive') {
try {
$user = User::find($uid);
$user->status = 'active';
$user->save;
echo "New";
} catch (Exception $e) {
print_r($e->getMessage());
}
} else {
echo "Again";
}
}
xmlUnhandled Exception
Message:
Call to a member function results() on a non-object
Location:
(censored)\laravel\database\eloquent\model.php on line 688
и хоть так, хоть сяк (через сеттер в модели), все один результат. При этом занчение поля status — изменено на active. Voodoo magic?
Не в сети
Не в сети
- Какой ужОс, пора завязывать с работой больше 10 часов…
Блок обновления можно заменить на один (если в модели не установлен PHP$accessible
):
User::update($uid, array('status' => 'active'));
Auth::user()->update(array('status' => 'active'));
Предварительно надо проверить, что кто-то авторизован, иначе будет ошибка при вызове метода на null.
Не в сети
Не в сети
Не в сети
Страницы 1