Преобразование времени в laravel из 2 входов

Я новичок в Laravel. Я использую в своем проекте Laravel 6. У меня есть 2 входа:

<input maxlength="5" type="text" name="hours_worked" class="form-control edited valid" value="" required="" onkeypress="return isNumberKey(event)">

<input type="text" name="minutes_worked" class="form-control edited valid" value="" required="" onkeypress="return isNumberKey(event)">

Я сохраняю в db с помощью этого кода:

WorkingTime::create( $this->request->all()

У меня проблема, например, когда кто-то печатает в поле. "90" минут. У меня в базе данных сохранено 90 минут - и я хотел бы сэкономить 1 час 30 минут.

Как я могу добиться этого с помощью моего кода?

Моя схема:

Schema::create('working_times', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('client_id')->unsigned();
            $table->foreign('client_id')->references('id')->on('clients')->onDelete('cascade');
            $table->integer('case_id')->unsigned();
            $table->foreign('case_id')->references('id')->on('case_instances')->onDelete('cascade');
            $table->integer('user_id')->unsigned();
            $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
            $table->smallInteger('hours_worked');
            $table->smallInteger('minutes_worked');
            $table->string('name');
            $table->string('appearance')->nullable();
            $table->longText('description')->nullable();
            $table->softDeletes();
            $table->timestamps();
        });

1 ответ

Решение

Это грубое решение, но вместо этого:

WorkingTime::create($this->request->all());

Делать:

$data = $this->request->all();
$hours = (int) $data['hours_worked'];
$minutes = (int) $data['minutes_worked'];
$overMinutes = $minutes % 60;
$hours += (int) (($minutes - $overMinutes) / 60);
$minutes = $overMinutes;

$data['hours_worked'] = $hours;
$data['minutes_worked'] = $minutes;

WorkingTime::create($data);
Другие вопросы по тегам