有很多类似的问题,但我没有找到解决我的问题的方法,所以这是问题所在:
我有一个简单的函数,应该用于计算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
我收到的消息是“Method 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实例的plain属性上调用aging方法。