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

如何使用 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

添加回答

代码语言

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号