为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 eloquent 在 laravel 中显示最近的单条记录

如何使用 eloquent 在 laravel 中显示最近的单条记录

PHP
海绵宝宝撒 2023-07-01 15:07:46
如何使用 eloquent 显示 laravel 中最新的单个记录,下面显示的解决方案仅显示数据库中最旧的记录而不是最新的记录。我有两张表:付款表和租户表。付款表有以下列ID数量出租方租给付款表与租户表具有多对一的关系。在我的索引页面中,我希望仅显示每个租户的最新付款(tenant_id)在我的控制器中我有public function index() {  $payments = Payment::groupBy('tenant_id')->get();  return view('payments.index')->with('payments',$payments);}索引.blade.php@foreach ($payments as $post)  {{ $post->id }}  {{ $post->amount }}  {{ $post->rent_from }}  {{ $post->rent_to }}  {{ $post->tenant['name'] }}@endforeach    这显示最旧的记录而不是最新的。如何显示每个租户的最新付款记录 - 每个tenant_id仅显示一条最新付款记录
查看完整描述

3 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

您可以通过使用 '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);

   

    }


查看完整回答
反对 回复 2023-07-01
?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

以下给出了我需要的输出。有没有更形象的方式来表达这个功能。


    {

$payments = Payment::whereRaw('id IN (select MAX(id) FROM payments GROUP BY tenant_id)')->get();

return view('payments.index')->with('payments',$payments);}


查看完整回答
反对 回复 2023-07-01
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

latest()是一个函数,它将按照您提供的列按降序排序。


 public function index()

         {

               $payments = Payment::groupBy('tenant_id')->get()->latest('id');

               return view('payments.index')->with('payments',$payments);

         }


查看完整回答
反对 回复 2023-07-01
  • 3 回答
  • 0 关注
  • 129 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信