根据 laravel 中的自定义 date_field 显示行中的最新数据

Show latest data from row based on custom date_field in laravel

我有 2 个表,我需要根据 blade 文件中的 due_date 字段显示行中的最新单个数据。

blade

@foreach(Auth::user()->statements->orderBy('due_date','desc')->get() as 
$statement)

<p> Your unpaid bill is: {{ $statement->billamount }} </p>

@endforeach

我收到这个错误

Method Illuminate\Database\Eloquent\Collection::orderBy does not exist. 
(View:...\home.blade.php)

编辑

我根据以下评论编辑了代码:

@foreach(Auth::user()->statements()->latest('due_date')->first() as 
$statement) 

{{ $statement->billamount }} //I only need the latest record to be shown

@endforeach 

它抛出这个错误:

Trying to get property 'billamount' of non-object.

Auth::user()->statements更改为Auth::user()->statements()

orderBy 是查询生成器的一种方法。 Auth::user()->statements 是一个集合,Auth::user()->statements 是一个查询构建器

要仅显示最新的行数据,您可以使用 orderByfirst 方法。示例:

Auth::user()->statements()->orderBy('created_at','desc')->first()

另一种使用latest方法的方法:

Auth::user()->statements()->latest('created_at')->first()

@foreach(Auth::user()->statements()->latest('due_date')->first()) 作为 $语句)

当你仔细观察时,在 first() 之后有一个额外的括号,所以将其删除并进行测试

@foreach(Auth::user()->statements()->latest('due_date')->first() 作为 $语句)

同上

同样,当使用 first 时,您不需要让 foreach 使用 get() 而不是 first()

get() return 是一个集合,而 first() return 是单个记录详细信息