Объединить два набора данных, а затем отсортировать и разбить на страницы в laravel - PullRequest
0 голосов
/ 14 марта 2019

Я выполняю два набора запросов.Но проблема в том, что я не могу их сортировать и разбивать на страницы.Мой код приведен ниже.

$orderhenkans = Orderhenkan::where('kokyakubango',Auth::guard('web')->user()->bango)
                               ->where('kokyakuorderbango',4)
                               ->get()->pluck('bango'); 
$misyukko1 = Misyukko::whereIn('orderbango',$orderhenkans)
                             ->whereNotNull('yoyakubi')->get();

$orderhenkans = Orderhenkan::where('kokyakubango',Auth::guard('web')->user()->bango)
                              ->get()->pluck('bango');
$misyukko2 = Misyukko::whereIn('orderbango',$orderhenkans)
                               ->whereNotNull('yoyakubi')
                               ->whereDate('hanbaibukacd','<',date('Y-m-d'))->get();

$misyukkos = $misyukko1->merge($misyukko2)->orderBy('orderbango', 'desc')->paginate(15);

Я пытаюсь получить две коллекции от одной модели.И $misyukko1, и $misyukko2 дают мне правильный вывод.После этого я объединяю их в переменную $misyukkos.

Когда я пытаюсь dd($misyukkos), это также дает мне правильный результат.Однако я не могу применять orderBy и разбивать на страницы, как обычно.Как я могу отсортировать и разбить на страницы мои данные?

Возможно, стоит отметить, что модель Orderhenkan имеет первичный ключ.Но Мисюкко нет.

PS Я искал на форуме.Я нашел несколько вопросов, которые похожи на мои.Но решения не сработали для меня.Поэтому, пожалуйста, не отмечайте его как дубликат.

Ответы [ 4 ]

1 голос
/ 14 марта 2019

Вы можете обновить свой запрос в один запрос: Предложить

Попробуйте это:

$orderhenkans = Orderhenkan::where('kokyakubango',Auth::guard('web')->user()->bango)
                               ->where('kokyakuorderbango',4)
                               ->get()->pluck('bango'); 


$orderhenkans2 = Orderhenkan::where('kokyakubango',Auth::guard('web')->user()->bango)
                              ->get()->pluck('bango');

$misyukkos = Misyukko::where(function($query) use ($orderhenkans, $orderhenkans2){
                            $query->where(function($q) use ($orderhenkans){
                                $q->whereIn('orderbango',$orderhenkans);
                            })
                            ->orWhere(function($q) use ($orderhenkans2){
                                return $q->whereIn('orderbango',$orderhenkans2)
                                         ->whereDate('hanbaibukacd','<',date('Y-m-d')); //or \Carbon\Carbon::now()->format('Y-m-d')
                            });
                        })
                        ->whereNotNull('yoyakubi')
                        ->orderBy('orderbango', 'desc')
                        ->paginate(15);

1 голос
/ 14 марта 2019

Попробуйте это:

$misyukkos = $misyukko1->merge($misyukko2);
$misyukkos->sort()->paginate(15);
0 голосов
/ 14 марта 2019
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Collection;
        $misyukkos = $misyukko1->merge($misyukko2)->toArray();

        $data = array();
        $currentPage = LengthAwarePaginator::resolveCurrentPage();
        $collection = new Collection($misyukkos);
        $per_page = 5;
        $currentPageResults = $collection->slice(($currentPage-1) * $per_page, $per_page)->all();
        $data['results'] = new LengthAwarePaginator($currentPageResults, count($collection), $per_page);
        $data['results']->setPath($request->url());
        dd($data);
0 голосов
/ 14 марта 2019

да, вы также можете обновить в один запрос.

$orderhenkans = Orderhenkan::where('kokyakubango',Auth::guard('web')->user()->bango)
                               ->where('kokyakuorderbango',4)
                               ->get()->pluck('bango'); 

$orderhenkans_2 = Orderhenkan::where('kokyakubango',Auth::guard('web')->user()->bango)
                              ->get()->pluck('bango');

$misyukkos = Misyukko::where(function($query) use ($orderhenkans, $orderhenkans_2){
    return $query->where(function($query_2) use ($orderhenkans){
        return $query_2->whereIn('orderbango',$orderhenkans)
                       ->whereNotNull('yoyakubi');
    })
    ->orWhere(function($query_2) use ($orderhenkans_2){
        return $query_2->whereIn('orderbango',$orderhenkans_2)
                        ->whereNotNull('yoyakubi')
                        ->whereDate('hanbaibukacd','<',date('Y-m-d'));
    });
})->orderBy('orderbango', 'desc')->paginate(15);

отредактировано

$orderhenkans = Orderhenkan::where('kokyakubango',Auth::guard('web')->user()->bango)
                                   ->where('kokyakuorderbango',4)
                                   ->get()->pluck('bango'); 

    $orderhenkans_2 = Orderhenkan::where('kokyakubango',Auth::guard('web')->user()->bango)
                                  ->get()->pluck('bango');

    $misyukkos = Misyukko::where(function($query) use ($orderhenkans, $orderhenkans_2){
        return $query->where(function($query_2) use ($orderhenkans){
            return $query_2->whereIn('orderbango',$orderhenkans);
        })
        ->orWhere(function($query_2) use ($orderhenkans_2){
            return $query_2->whereIn('orderbango',$orderhenkans_2)                            
                            ->whereDate('hanbaibukacd','<',date('Y-m-d'));
        });
    })->whereNotNull('yoyakubi')->orderBy('orderbango', 'desc')->paginate(15);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...