【问题标题】:Calculate percentage of two inputs in laravel计算laravel中两个输入的百分比
【发布时间】:2019-09-22 03:38:40
【问题描述】:

我想计算两个输入的百分比,即总分和获得的分数。当用户填写这两个输入时,我想在百分比字段中自动显示百分比。我没有基本的想法。下面是我的控制器

/** 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();
}

【问题讨论】:

    标签: php laravel percentage


    【解决方案1】:

    您可以在 Request 模型类中创建 computed Accessor attribute

    /** 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_marksobtained_marks 是您表格的列。如果这不是正确的名称,请将其替换为您实际使用的名称。


    注意,在创建您返回的元素之后.. 例如,您可以重定向到 show 视图。来自docs

    重定向到命名路由

    当您调用不带参数的 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]);
    

    【讨论】:

    • 如何在我的控制器中调用该访问器?我很困惑
    • @HasnainKahn 访问器是在模型内部定义的,然后您可以将访问权限用作任何其他模型属性:$request->name, $user->marks_percentage
    • @HasnainKahn 检查this video 以进一步了解这一点。
    • @HCK 缺少括号 getMarksPercentageAttribute()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-12
    • 1970-01-01
    相关资源
    最近更新 更多