Рассчитать процент двух входов в laravel - PullRequest
1 голос
/ 03 мая 2019

Я хочу рассчитать процент от двух входных данных, которые являются суммарными оценками и полученными оценками. Когда пользователь заполняет эти два ввода, то в процентном поле я хочу, чтобы процент автоматически отображался. У меня нет основной идеи. Ниже мой контроллер

/** MyController.php */

public function store(ReportRequest $request)
{
    $input = $request->all();

    if ($file = $request->file('photo_id'))
    {
        $name = time() . $file->getClientOriginalName();
        $file->move('images', $name);
        $photo = Photo::create(['file'=>$name]);
        $input['photo_id'] = $photo->id;
    }

    Report::create($input);

    return redirect()->back();
}

1 Ответ

1 голос
/ 03 мая 2019

Вы можете создать вычисляемый атрибут Accessor в вашем Request классе модели:

/** Request.php */

public function getMarksPercentageAttribute
{
    return (float) $this->obtained_marks / $this->total_marks;
}

Итак, когда вы создаете свои записи .. вы можете использовать этот атрибут:

$request = Request:first();
dd($request->marks_percentage); // 0.35 for example

PS: я предполагаю, что total_marks и obtained_marks являются столбцами вашей таблицы. Если это неправильные имена, замените их теми, которые вы на самом деле используете.


Обратите внимание, что после создания элемента, который вы возвращаете назад, вы можете, например, перенаправить на show представление. Из документов :

Перенаправление на именованные маршруты

Когда вы вызываете помощник redirect без параметров, экземпляр Illuminate\Routing\Redirector возвращается, что позволяет вам позвонить любому метод в экземпляре Redirector. Например, чтобы сгенерировать RedirectResponse к названному маршруту, вы можете использовать метод route:

return redirect()->route('login');

Если у вашего маршрута есть параметры, вы можете передать их в качестве второго аргумента к методу маршрута:

// For a route with the following URI: profile/{id}

return redirect()->route('profile', ['id' => 1]);
...