我想从MySQL表中获取的$start_date
和$end_date
执行微积分。在我的视图中,我应该在哪里使用微积分函数来访问它?
我是CakePhp的新手。我有这个控制器:
class PostersController extends AppController {
var $name = 'Posters';
function index (){
$request = $this->Poster->find('all');
$this->set('posters', $request);
}
在我的海报MySQL表中,我有$start_date
和$end_date
个字段。
我希望有一个功能来使用持续时间执行微积分
这个功能。
function PosterDuration ($start_date, $end_date){
$duration = $start_date->diff($end_date);
return $duration;
}
我希望在每个海报的视图中查看$duration
。但是我不知道在哪里放这个函数逻辑。
Posters.ctp
视图访问它。DuractionCalculusComponent
的组件。由于我是CakePhp的新手,我的知识水平不高,不知道选择哪个选项。
答案 0 :(得分:0)
如果它仅用于视图层中的表示/输出,请将其作为帮助程序,并为您显示的每个记录“按需”调用它。
echo $this->Calculus->diff($date1, $date2);
如果在控制器/模型级别需要以某种方式工作,它可能更适合作为行为方法或一些afterFind()回调。
这实际上取决于用例。所以不要再去这里了。
答案 1 :(得分:0)
当控制器中的所有值都可用时。只需计算差值并使用set function或set compact将计算结果传递给视图。
$this->set('duration', $duration);
如果你在多个地方使用它,那么你可以去帮忙。为此,您需要传递变量。 Don的数据库形成帮助文件。这不是一个好习惯。