我是新手,我需要每月将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]);
}
如果有人建议我采用正确的方法,这对我非常有帮助。谢谢
答案 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
}