У меня очень странная проблема в приложении Laravel.
В моем приложении: у меня есть поле, в котором пользователи должны указывать дату своего рождения при регистрации. Все сохраняется правильно и отображается правильно после регистрации и входа в систему в первый раз (он автоматически регистрирует вас после регистрации). Но как только вы выйдете из системы и снова войдете в систему: дата рождения сбрасывается на сегодняшнюю.
И вот где это становится странным: это происходит только тогда, когда я делаю это на рабочем сервере. На локальном сервере разработки он ведет себя совершенно нормально.
Это происходит только с определенной учетной записью, которая вошла в систему, и не влияет на все учетные записи одновременно.
Рабочий сервер запущен из Laravel Forge и размещен на DigitalOcean. Рабочий сервер работает под управлением Ubuntu 18.04 и PHP версии 7.2
Локальный сервер разработки - это компьютер под управлением Windows, и я использую все, что поставляется с Laragon .
Используемая версия Laravel - 5.6
.
Теперь вот весь код, который у меня есть вокруг поля дня рождения:
Миграция базы данных
Schema::table('users', function (Blueprint $table) {
$table->timestamp('birthday')->after('password');
});
RegisterController.php
protected function validator(array $data)
{
return Validator::make($data, [
...
'birthday' => 'required|date_format:d.m.Y',
...
]);
}
protected function create(array $data)
{
return User::create([
...
'birthday' => Carbon::parse($data['birthday'])->format('Y-m-d H:i:s'),
...
]);
}
LoginController использует по умолчанию нетронутый код входа в систему, созданный командой artisan make:auth
в версии 5.6 Laravel.
Вот код контроллера для предпочтений моих пользователей, где они могут изменить дату своего рождения в случае, если они пропустили его при регистрации.
AccountController.php
Это код, который захватывает текущего вошедшего в систему пользователя и отображает его настройки:
public function index() {
$user = User::find(Auth::id());
return view('account.account')->withUser($user);
}
И это та часть, которая сохраняет и обновляет свои настройки, когда нажимает на кнопку сохранения:
public function update(Request $request) {
$this->validate($request, [
...
'birthday' => 'required|date|before:-15 years'
]);
$user = User::find(Auth::id());
...
$user->birthday = Carbon::parse($request->birthday)->format('Y-m-d H:i:s');
...
$user->save();
Session::flash('success', 'Din bruker ble oppdatert.');
return redirect()->route('my.account');
}
Это все отлично работает, обновляет и правильно устанавливает день рождения в базе данных. Это просто изменяется на сегодняшнюю дату, когда пользователь вошел в систему. Не происходит с локальным сервером разработки, а только на рабочем сервере. Что очень затрудняет правильную отладку.
Дайте мне знать, если вам нужна дополнительная информация. Любая помощь с благодарностью:)