在进入刀片服务器之前,我可以在控制器中进行数学运算吗

时间:2019-05-25 08:07:26

标签: laravel

我是新手,我需要每月将total总计输入刀片服务器以供其他输入,控制器可以在进入刀片服务器之前做一些数学运算吗?因为我以前从未使用过MVC。

以下与控制器的功能相同:-

public function detail(Request $request,$id)
{
    $borrow = Borrow::find($id); 

    $monthly = $borrow->total / $borrow->month;
    $interest = $borrow->total * $borrow->interest;
    $total_monthly = $monthly + $interest;

    return view('profile/detail',['profile' => $borrow]);
}

如果有人建议我采用正确的方法,这对我非常有帮助。谢谢

3 个答案:

答案 0 :(得分:1)

如果要对要发送到视图的数据进行某种计算或格式化。为此,您可以在Laravel中使用Presenters

您可以在下面提供的Laravel演示者包中使用

https://github.com/laracasts/presenter

有关文档,您可以参考click here

这是进行这类数据格式化或计算的正确方法。

它的主要好处是当您使用模型从数据库中获取全部或数量的项目时。然后,您无需循环该集合。您只需要为该模型创建新类并在模型中添加当前类路径即可。然后,Laravel为您对集合的每个项目进行迭代。

答案 1 :(得分:0)

如果您只想使用$borrow对象传输计算结果,则可以:

public function detail(Request $request,$id)
{
    $borrow = Borrow::find($id); 

    $borrow->monthly = $borrow->total / $borrow->month;
    $borrow->net_interest = $borrow->total * $borrow->interest;
    $borrow->total_monthly = $borrow->monthly + $borrow->net_interest;

    return view('profile/detail',['profile' => $borrow]);
}

您还可以使用原始代码中的数组(例如

)将多个变量返回到刀片模板。
return view('profile/detail',['profile' => $borrow, 'total_monthly'=>$total_monthly, ]);

答案 2 :(得分:0)

只需附加要发送的数据数组即可查看:

return view('profile/detail', [
    'profile' => $borrow, 
    'interest' => $interest,
    'total_monthly' => total_monthly,
]);

这样,所有3个变量都可以在视图文件中访问。

良好的实用用法之一是继续使用compact()函数将变量传递给视图:

public function detail(Request $request,$id)
{
    $profile = Borrow::find($id); 

    $monthly = $profile->total / $profile->month;
    $interest = $profile->total * $profile->interest;
    $totalMonthly = $monthly + $interest;

    return view('profile/detail', compact('profile', 'monthly', 'interest', 'totalMonthly');// notice how renamed $borrow var is to correspond with compact() function
}