php - Laravel 5 - 我应该在哪里编写这个函数,以及如何编写?
问题描述
晚上好,
我有一个概览页面,其中显示了我的所有项目项。
我有一个模型(Project.php)和一个控制器(ProjectController),我将变量$project(这包括每个项目的所有信息)发送到特定视图。
注意:每个项目在数据库中都有自己的行。(我猜很明显)
现在我还有一个与特定项目相关的表“任务”。在我看来,我想显示“完成”了多少总任务。(这与“完成”列(真/假,布尔值)有关)。
现在因为我的视图中有一个 foreach 函数(显示每个单独的项目),所以我可以在视图中创建该函数。但是 Laravel 框架的存在是有原因的。并且在视图中写出很多 php 不是正确的方法。
但是,我应该在哪里做这个功能?以及如何在我的 foreach 中使用它(在视图中)。当然,我可以在我的模型或控制器中创建一个新的 foreach 并将该变量发送到我的视图。但是我不能在我的 view-foreach 中使用那个,因为事情会变得混乱。
我不知道如何/在哪里可以以干净的方式设置这样的功能。
亲切的问候,
迪伦
解决方案
谢谢您的帮助。我已经想通了(我猜?)。
我的项目模型中有这个功能。
public function getTaskDonePercentage($id) {
$tasks = Task::where('project_id', $id)->count();
$tasks_done = Task::where([
['project_id', $id],
['status', 'done']
])->count();
if ($tasks_done > 0) {
$calc = ($tasks_done / $tasks) * 100;
}
else {
$calc = '100';
}
return round($calc) . '%';
}
然后在我看来,我只是在 foreach 中调用该函数,例如:
@foreach
{{ $project_item->getTaskDonePercentage($project_item->id) }}
@endforeach
Tbh 我仍然想知道这种方法是否好。(或者,如果不是,为什么不是?)。
谢谢!
推荐阅读
- android - 如何在颤动中将徽章计数添加为BottomNavigationBarItem的一部分
- python - 当我尝试安装 discord.py 它给了我错误
- python - Pandas Groupby - 如果多行超过另一列中的值,则选择一列中具有最高值的行
- java - Spring Security 4 在 Grails 4.0.0 中使用 sha256 给出的不同哈希值
- java - 不能在Java中的另一个类中使用类方法
- python - 将文件读入列表并用 Python 中的值替换变量
- sql - 使用max从多个表中选择数据?
- javascript - 使用谷歌距离矩阵 API 计算距离,除了少数几个查询外,几乎所有查询都运行良好
- python - 在 AppJar 中选择文件时限制文件类型
- python - 从二维数组中删除交换的重复项