Я делаю отношения между 2 таблицами
Report and Order_items
public function items()
{
return $this->hasMany('App\Models\Order_item', 'waybill_number', 'csv_waybill_number');
}
Вот самая короткая часть запроса, которая работает, но очень медленно!
Если я использую limit ($ perPage) -> get () вместо paginate ($ perPage), результаты будут намного быстрее, почему-то paginate () замедляется из-за -> has (), если я удаляю его из запроса, работает для 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 () и делать подзапрос с Имея внутри как:
->with(['items' => function($q){
$q->select(['order_items.waybill_number', 'order_items.item_number']);
$q->having(DB::raw('COUNT(waybill_number)'),">", "1");
}])
Что бы я ни пытался вместо -> has () не работает, очевидно, я делаю это неправильно. Я считаю, что если я использую что-то еще, то все будет хорошо с paginate ()
Задача ещё не решена.
Других решений пока нет …