我的 Laravel 项目中有三个数据库表(Borrowers, Savings, Savings_Transaction)。我的目标是显示过去 30 天没有任何储蓄交易的休眠账户。在我的借款人表中,我有像这样的列ID名姓在我的储蓄表中,我有id(自动递增)Borrower_id(为 borrowers 表选择 id)在我的 Savings_transaction 表中,我有id(自动递增)savings_id(从储蓄表中选择 id)Borrower_id(从 borrower_table 中选择 id)Created_at(记录交易的日期)每个借款人都有一个储蓄账户,记录在储蓄表中。每当他们进行交易时,它都会记录在 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 天的账户如何删除有最新交易的账户?
1 回答
慕容3067478
TA贡献1773条经验 获得超3个赞
现在我想选择过去 30 天没有进行任何交易的借款人
您必须选择 Borrowers 而不是 SavingTransaction
// suppose "savingTransactions" is hasMany relation defined in Borrowers model
$result = Borrowers::whereDoesntHave('savingTransactions', function($queryBuilder){
$queryBuilder->whereDate('created_at','<=', Carbon::now()->subDays(30));
})->get();
如果你没有关系,你也可以使用->whereNotExists(...)
- 1 回答
- 0 关注
- 114 浏览
添加回答
举报
0/150
提交
取消