php - 如何在laravel中加入两个不同的数组并按日期显示顺序
问题描述
我有两个名为付款和发票的数组。我需要按发票日期和付款日期 ASC 显示这些数组顺序。
控制器代码:
$reqsales=Sales::Where('inv_date','>=',$request->input('frmdate_submit'))->Where('inv_date','<=',$request->input('todate_submit'))->Where('customer_id',$request->input('clients'))->get();
$reqpayments=Paymenttransaction::Where('transaction_date','>=',$request->input('frmdate_submit'))->Where('transaction_date','<=',$request->input('todate_submit'))->Where('transaction_category',1)->Where('transaction_type',2)->Where('transaction_cus_vendor',$request->input('clients'))->get();
查看代码如下
@foreach($reqsales as $sales)
<tr>
<td>{{date("d M Y",strtotime($sales->inv_date))}}</td>
<td>Invoice - {{$sales->inv_prefix.''.$sales->inv_no}}</td>
<td align="right"> {{number_format($sales->invoice_totalamt,2)}} @php $debitamt+=$sales->invoice_totalamt; @endphp</td>
<td></td>
</tr>
@endforeach
@foreach($reqpayments as $payments)
<tr>
<td>{{date("d M Y",strtotime($payments->transaction_date))}}</td>
<td>Payment for {{$payments->sales->inv_prefix.''.$payments->sales->inv_no}}</td>
<td></td>
<td align="right">{{number_format($payments->transaction_amt,2)}} @php $creditamt+=$payments->transaction_amt; @endphp</td>
</tr>
@endforeach
当前显示
需要显示
解决方案
如果您有两个不同的数组,则无法订购。在您当前的情况下,您的所有发票都会在打印付款之前打印。
因此,从某种意义上说,您必须在单个查询中处理此问题。您需要像这样在单个查询构建中获取所有数据(包括发票和付款),
$data = SomeCommonTable::leftJoin('invoice...')
->leftJoin('payment...')
->selectRaw(...)
->orderBy('date','asc/desc)
->get();
如果你不能像上面的查询那样实现,你需要在两者中unionAll
使用selectRaw
相同的queryBuilder
,一旦你联合它,你就可以orderBy('date','asc/desc')
在你的联合查询中添加。您可以在此处参考文档以获取更多详细信息union
推荐阅读
- azure - Azure CDN“清除”命令无法按预期与自定义域一起使用
- wpf - WPF 自定义控件控件未对齐
- python - 在 Robot Framework 中的 Suite Teardown 之前解析 output.xml
- c# - C# SoundPlayer macOS?
- java - 转储部分 Java Flight Record
- reactjs - 创建 React 应用程序时如何解决解析包的错误
- javascript - react/redux google auth登录问题(firebase)
- javascript - 我如何将纱线用于前端?如何加载模块?
- sql - 如何在sql中交叉连接两个表
- c++ - 如何将 vala 语言添加到一些现有的 c/c++ 项目中?