如何使用eloquent显示laravel中的最近单条记录
How to display the most recent single record in laravel using eloquent
如何使用 eloquent 在 laravel 中显示最近的单个记录 我在下面显示的解决方案仅显示数据库中最旧的记录而不是最新的。
我有两个 table 付款 table 和租户 table。
付款 table 有以下列
- id
- 数量
- rent_from
- rent_to
付款 table 与租户 table 具有多对一关系。
在我的索引页面中,我希望只显示每个租户的最新付款 (tenant_id)
在我的控制器中我有
public function index() {
$payments = Payment::groupBy('tenant_id')->get();
return view('payments.index')->with('payments',$payments);
}
index.blade.php
@foreach ($payments as $post)
{{ $post->id }}
{{ $post->amount }}
{{ $post->rent_from }}
{{ $post->rent_to }}
{{ $post->tenant['name'] }}
@endforeach
这里显示的是最早的记录,而不是最新的。我如何显示每个租户的最新付款记录 - 每个 tenant_id
只有一个最近的付款记录
您可以使用 'hasOne' 和 orderByDesc 建立一个名为 'lastPayment' 的新关系以获得最后一笔付款....
class Tenant extends Model
{
public function lastPayment()
{
return $this->hasOne(Payment::class,'tenant_id')->orderByDesc('payments.id');
}
}
public function index()
{
$tenants= Tenant ::with('lastPayment')->get();
return view('payments.index')->with('tenants',$tenants);
}
latest()
是一个函数,它将按您提供的列降序排序。
public function index()
{
$payments = Payment::groupBy('tenant_id')->get()->latest('id');
return view('payments.index')->with('payments',$payments);
}
下面给出了我需要的输出。有没有更多的eloquent表达这个功能的方式。
{
$payments = Payment::whereRaw('id IN (select MAX(id) FROM payments GROUP BY tenant_id)')->get();
return view('payments.index')->with('payments',$payments);}
如何使用 eloquent 在 laravel 中显示最近的单个记录 我在下面显示的解决方案仅显示数据库中最旧的记录而不是最新的。
我有两个 table 付款 table 和租户 table。 付款 table 有以下列
- id
- 数量
- rent_from
- rent_to
付款 table 与租户 table 具有多对一关系。
在我的索引页面中,我希望只显示每个租户的最新付款 (tenant_id)
在我的控制器中我有
public function index() {
$payments = Payment::groupBy('tenant_id')->get();
return view('payments.index')->with('payments',$payments);
}
index.blade.php
@foreach ($payments as $post)
{{ $post->id }}
{{ $post->amount }}
{{ $post->rent_from }}
{{ $post->rent_to }}
{{ $post->tenant['name'] }}
@endforeach
这里显示的是最早的记录,而不是最新的。我如何显示每个租户的最新付款记录 - 每个 tenant_id
只有一个最近的付款记录您可以使用 'hasOne' 和 orderByDesc 建立一个名为 'lastPayment' 的新关系以获得最后一笔付款....
class Tenant extends Model
{
public function lastPayment()
{
return $this->hasOne(Payment::class,'tenant_id')->orderByDesc('payments.id');
}
}
public function index()
{
$tenants= Tenant ::with('lastPayment')->get();
return view('payments.index')->with('tenants',$tenants);
}
latest()
是一个函数,它将按您提供的列降序排序。
public function index()
{
$payments = Payment::groupBy('tenant_id')->get()->latest('id');
return view('payments.index')->with('payments',$payments);
}
下面给出了我需要的输出。有没有更多的eloquent表达这个功能的方式。
{
$payments = Payment::whereRaw('id IN (select MAX(id) FROM payments GROUP BY tenant_id)')->get();
return view('payments.index')->with('payments',$payments);}