我在2张桌子之间建立联系
报告和订单项
public function items()
{
return $this->hasMany('App\Models\Order_item', 'waybill_number', 'csv_waybill_number');
}
这是查询中最短的部分,可以运行,但是非常慢! 如果我使用limit($ perPage)-> get()而不是paginate($ perPage)的结果要快得多,则由于-> has()的原因,如果我将其从查询中删除,paginate()会变慢,这适用于1-2秒,否则超过一分钟...
$perPage = 45;
$pagination = Report::with(['items' => function($q){
$q->select(['order_items.waybill_number', 'order_items.item_number']);
}])->with(['items' => function($q){
$q->select(['order_items.waybill_number', 'order_items.item_number']);
}])->has('items','>', 1)
->join('order_items','order_items.waybill_number','=','globeflight_report.csv_waybill_number');
$pagination = $pagination->paginate($perPage)
我尝试不使用-> has()并使用“ having inside”作为子查询:
->with(['items' => function($q){
$q->select(['order_items.waybill_number', 'order_items.item_number']);
$q->having(DB::raw('COUNT(waybill_number)'),">", "1");
}])
无论我尝试什么,而不是-> has()都不起作用,显然我做得不好。我相信,如果我使用其他方法,可以通过paginate()正常工作