laravel - Laravel 5(自定义)计算年龄(天)的方法不存在
问题描述
有很多类似的问题,但我没有找到我的问题的解决方案,所以这里是问题:
我有一个简单的函数,应该用于计算年龄(以天为单位),列在 SubmissionController 中:
public function agingDate($sub) {
$to = \Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $sub);
$now = Carbon::now();
$diff_in_days->age = $to->diffInDays($now);
return $diff_in_days;
}
此外,在同一个控制器中:
public function index() {
$submission = Submission::orderBy('location_address_state', 'asc')
->get();
return view('/subs/index', [
'submission' => $submission
]);
}
最后,在我看来,我试图调用这个函数:
@if($submission)
@foreach($submission as $sub)
<p>{{ $sub->created_at->agingDate() }}</p>
@endforeach
@endif
我收到的消息是“方法agingDate 不存在。(查看:/subs/index”)。为什么我不能访问这个功能 - 它在同一个控制器中?
解决方案
为了保持关注点分离的完整性,我建议您将您的agingDate()
方法移动到您的submission
模型中。
因此,在您的Submission
模型中,您可以通过以下方式对其进行重构:
public function agingDate() {
$to = \Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $this->created_at);
$now = Carbon::now();
return $to->diffInDays($now);
}
在您的刀片文件中,您应该可以调用:
@if($submission)
@foreach($submission as $sub)
<p>{{ $sub->agingDate() }}</p>
@endforeach
@endif
您当前使用的方法不起作用,因为您试图在 Submission 实例的普通属性上调用老化方法。
推荐阅读
- windows - 无法在 Cygwin 终端中显示变音符号
- delphi - Delphi下如何实现一个Int128类型?
- mysql - 大于和小于日期在 sequelize 中没有记录,但可以与 heidisql 一起使用
- reactjs - React / Redux - 异步操作在不使用 thunk 的情况下工作
- css - 如何使用 scrapy(网页抓取)导航到下一页
- visual-studio-code - VS Code:寻找通过编程语言对其他扩展进行分组的扩展
- java - GenerationTarget 遇到异常接受命令:通过 JDBC 语句执行 DDL 引擎 = MyISAM 时出错
- azure - 在公共容器上获取“AuthorizationPermissionMismatch”
- javascript - PhpStorm 发出奇怪的信息
- javascript - 如何正确地将 graphql 突变推送到组件的道具中?