Laravel | Повторное использование переменной запроса вместо дублирования запроса

Я пытаюсь повторно использовать переменную запроса, но похоже, что она принимает последнее назначенное значение, а не исходное, вот что я имею в виду:

$categories = DB::table('invoice_detail')
->selectRaw('SUM(qty) as qty')
->where('loc_id', '=', $user->loc_id)
->join('items', 'invoice_detail.item_id', 'items.barcode')
->where('items.active', '1')
->join('categories', 'items.category_id', 'categories.id')
->addSelect('categories.name')
->groupBy('categories.name');
dump($categories->get()); //It returns whole products, which is OK.
$topCategories  = $categories->orderBy('qty', 'DESC')->take(5)->get();
dump($categories->get()); // It returns the top products, not the original value.
$downCategories = $categories->orderBy('qty', 'ASC')->take(5)->get();

Я хочу использовать $categories переменная, чтобы получить Top Products а также Down Products без дублирования запросов.

Но в первом дампе он возвращает целые продукты, что в порядке, затем после получения Top Products, он возвращает лучшие продукты, а не первоначальное значение.

Какие-либо предложения?

1

Решение

Вы всегда можете использовать __clone способ сделать copy определенного объекта если и только если в этом объекте реализован метод __clone:

$topCategories= clone $categories;
$topCategories->orderBy('qty', 'DESC')->take(5)->get();
$downCategories = clone $categories;
$downCategories->orderBy('qty', 'ASC')->take(5)->get();
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]