如何在 MySQL 的 Created_at 列中为 Laravel 选择最新日期

我的 Laravel 项目中有三个数据库表(Borrowers, Savings, Savings_Transaction)。我的目标是显示过去 30 天没有任何储蓄交易的休眠账户。

在我的借款人表中,我有像这样的列

  1. ID

http://img1.mukewang.com/641ffdf0000110ea04960121.jpg

在我的储蓄表中,我有

  1. id(自动递增)

  2. Borrower_id(为 borrowers 表选择 id)

http://img2.mukewang.com/641ffdfb000165cd06540104.jpg

在我的 Savings_transaction 表中,我有

  1. id(自动递增)

  2. savings_id(从储蓄表中选择 id)

  3. Borrower_id(从 borrower_table 中选择 id)

  4. Created_at(记录交易的日期)

http://img4.mukewang.com/641ffe090001a15106590261.jpg

每个借款人都有一个储蓄账户,记录在储蓄表中。每当他们进行交易时,它都会记录在 savings_transaction 表中。


在Every trasanction中记录了borrower_id、savings_id和created_at。


现在我想使用此代码选择过去 30 天内未进行任何交易的借款人(休眠账户/成员)


public function dormant()

{




        $dormant = SavingTransaction::where('reversed', 0)->where('branch_id',

            session('branch_id'))->whereDate('created_at','<=', Carbon::now()->subDays(30))->groupBy('savings_id','created_at')->orderBy('created_at', 'asc')->get();



    return view('saving.dormant',

        compact('dormant'));

}

但它会带来所有交易日期低于 30 天和超过 30 天的账户


如何删除有最新交易的账户?


小怪兽爱吃肉
浏览 89回答 1
1回答

慕容3067478

现在我想选择过去 30 天没有进行任何交易的借款人您必须选择 Borrowers 而不是 SavingTransaction// suppose "savingTransactions" is hasMany relation defined in Borrowers model$result = Borrowers::whereDoesntHave('savingTransactions', function($queryBuilder){&nbsp; $queryBuilder->whereDate('created_at','<=', Carbon::now()->subDays(30));})->get();如果你没有关系,你也可以使用->whereNotExists(...)
打开App,查看更多内容
随时随地看视频慕课网APP