首页 > 解决方案 > 检索关系后如何使用 Carbon 计算日期?

问题描述

我正在尝试获取当前用户并查看他们所有分配的项目,然后我想获取当前用户的到期日期并计算与今天的差异并显示分配在 3 天内到期。

检索关系后如何计算日期之间的差异?

这是我在模型、控制器和刀片中尝试过的。

模型:

public function getDates()
{
    return ['created_at', 'due'];
}


public function getDueAttribute()
{
    $due = Carbon::parse($this->attributes['due'])->diff(Carbon::now())->format('%d');
    return $due;
}

控制器:

$assignents = Assign::whereHas('users', function ($q) {
    $q->where('user_id', Auth::user()->id);
})->get();
$assignents->due;

刀:

{{$due}}

标签: phplaravel

解决方案


您正在访问集合上的属性,因此要么获取单个实例Assignment

$assignment = Assign::whereHas('users', function ($q) {
    $q->where('user_id', Auth::user()->id);
})->first();

$due = $assignment->due;

---- blade ----
Assignment is due in {{ $due }} days

或遍历集合以访问该属性

$assignments = Assign::whereHas('users', function ($q) {
    $q->where('user_id', Auth::user()->id);
})->get();

---- blade ----
@foreach ($assignments as $assignment)
Assignment is due in {{ $assignment->due }} days
@endforeach

推荐阅读