Вы можете использовать объект DateTime :
use DateTime;
my $dt;
while ( my ($date, $sum) = $sth->fetchrow ) {
if (defined $dt) {
print CSV $dt->ymd . ",0\n" while $dt->add(days => 1)->ymd lt $date;
}
else {
my ($y, $m, $d) = split /-/, $date;
$dt = DateTime->new(year => $y, month => $m, day => $d);
}
print CSV, "$date,$sum\n";
}
. Что делает вышеприведенный код, это сохранение последней печатной даты, сохраненной в объекте DateTime
$dt
, и если текущая дата больше одного дня в будущем, она увеличивает $dt
на один день (и печатает ее в строке CSV
) до тех пор, пока она не будет такой же, как текущая дата.
Таким образом вам не нужны дополнительные таблицы, и вам не нужно забирать все ваши строки заранее.
Вам придется переопределить эти методы в вашем LoginController, просто вставьте это и измените соответствующим образом.
Измените имя поля по умолчанию email
на cpf
:
public function username()
{
return 'cpf'; // or whatever field you use to login
}
Выполните здесь проверку с учетными данными:
protected function validateLogin(Request $request)
{
$request->validate([
$this->username() => 'required|string|exists:users,cpf',
]);
}
Выполните запрос на вход. Здесь мы ищем пользователя, затем регистрируем его вручную и перенаправляем на панель управления (домой), если это не удается, вы будете перенаправлены обратно со входом, который был вставлен в форму:
public function login(Request $request)
{
$this->validateLogin($request);
$user = User::where('cpf', $request->cpf)->first();
if ($user) {
Auth::login($user);
return redirect()->intended('home');
}
return redirect()->back()->withInput($request->all());
}
[1111 ] Таблица БД, с которой я тестировал:
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('cpf')->unique();
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->rememberToken();
$table->timestamps();
});
Шаг 1: открыть файл AuthenticatesUsers.php
Шаг 2: обновить функцию username()
, по умолчанию вы увидите электронную почту. вам нужно обновить его до cpf.
public function username()
{
return 'cpf';
}
Шаг 3: обновите функцию credentials(Request $request)
, по умолчанию это пароль. Вы можете изменить в соответствии с вашим подходом. если вы не хотите этого, вы также можете удалить поле для пароля!
protected function credentials(Request $request)
{
//return $request->only($this->username(), 'password');
return $request->only($this->username());
}