如何在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

当前显示

http://img.mukewang.com/6184d45a0001531411530923.jpg

需要显示


http://img.mukewang.com/6184d4660001c34011560674.jpg

慕标琳琳
浏览 163回答 2
2回答

米脂

如果您有两个不同的数组,则无法订购。在您当前的情况下,您的所有发票都会在打印付款之前打印。因此,从某种意义上说,您必须在单个 Query 中处理此问题。您需要像这样在单个查询构建中获取所有数据(发票和付款),$data = SomeCommonTable::leftJoin('invoice...')&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ->leftJoin('payment...')&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ->selectRaw(...)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ->orderBy('date','asc/desc)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ->get();如果你不能像上面的查询那样实现,你需要在两者中unionAll使用selectRaw相同的queryBuilder,一旦你联合它,你就可以添加orderBy('date','asc/desc')你的联合查询。您可以在此处参考文档以获取更多详细信息union

qq_笑_17

如果你想从查询中做到这一点,那么你必须简单地使用union all你可以在同一行中选择 inv_date 和 transaction_date 列的地方。在 php.ini 中还有另一种方法可以做到这一点。您可以使用数组方法。用这个:$reqSalesPayments = array_merge($reqsales, $reqpayments);$inv_date = array_column($reqsales, 'inv_date');$transaction_date = array_column($reqpayments, 'transaction_date');$arr = array_merge($inv_date, $transaction_date);array_multisort($arr, SORT_ASC, $reqSalesPayments);foreach($reqSalesPayments as $sales){&nbsp; &nbsp; //Print the table}
打开App,查看更多内容
随时随地看视频慕课网APP