我正在尝试将查询结果传递到视图中,但我不断收到错误:超过 30 秒的最大执行时间我正在传递较小的对象并且它工作正常,但是当我传递 $monthlyBidStatment 的结果时它会中断通过。如果有更好的方法来做到这一点,我真的很感激任何建议。提前致谢。
public function sendEmailInvoice(Request $request)
{
$invoice = Invoice::where('id', '=', $request->invoiceId)->first();
$startDate = $invoice->start_billing_date;
$startDateSql = date("Y-m-d", strtotime($startDate));
$endDate = $invoice->end_billing_date;
$endDateSql = date("Y-m-d", strtotime($endDate));
$affiliate = AffiliateDetail::where('id', '=', $invoice->affiliate_detail_id)->first();
$monthlyBidStatment = BidTracker::where('affiliate_detail_id', '=', $affiliate->id)->whereBetween('created_at', [$startDateSql, $endDateSql])->get();
// LOG::info(gettype($monthlyBidStatment));
Mail::send('pdf.invoicePDF', [
'oAffiliate' => $affiliate,
'oInvoice' => $invoice,
'bids' => $monthlyBidStatment,
'showBreadcrumb' => false
], function ($m) use ($affiliate, $invoice, $monthlyBidStatment)
{
$m->from(env('APP_EMAIL'), env('APP_NAME'));
$m->to($affiliate->info_billing_email, $affiliate->info_company_name)->subject(env('APP_NAME') . ' Invoice');
$pdf = PDF::loadView('pdf.invoicePDF', [
'oAffiliate' => $affiliate,
'oInvoice' => $invoice,
'bids' => $monthlyBidStatment,
'showBreadcrumb' => false
]);
$m->attachData($pdf->output(), 'invoice.pdf');
});
$request->session()->flash('message', 'Successfully sent email invoice');
return array(
'status' => 'ok'
);
}
检查以下行:
$invoice = Invoice::where('id', '=', $request->invoiceId)->first();
// Its a collection object.
Eloquent 返回的所有多结果集都是 Illuminate\Database\Eloquent\Collection 对象的实例,包括通过 get 方法检索或通过关系访问的结果。Eloquent 集合对象扩展了 Laravel 基础集合,因此它自然继承了数十种用于流畅地处理 Eloquent 模型底层数组的方法。
简而言之,我们可以说一个集合对象包含很多东西,但在您的情况下,您只需要数据部分。因此,不是传递整个集合对象,而是通过使用所需的列迭代将其转换为数组并将该数组传递给电子邮件模板。它将消除开销。
前任:
$data = array();
$users = App\User::where('active', 1)->get();
foreach ($users as $user) {
$data[] = $user->name;
}
// Use $data where required
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句