Я пытаюсь повторно использовать переменную запроса, но похоже, что она принимает последнее назначенное значение, а не исходное, вот что я имею в виду:
$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
, он возвращает лучшие продукты, а не первоначальное значение.
Какие-либо предложения?
Вы всегда можете использовать __clone
способ сделать copy
определенного объекта если и только если в этом объекте реализован метод __clone:
$topCategories= clone $categories;
$topCategories->orderBy('qty', 'DESC')->take(5)->get();
$downCategories = clone $categories;
$downCategories->orderBy('qty', 'ASC')->take(5)->get();
Других решений пока нет …