Bonjour, je voudrai savoir s'il y avait une meilleure facon de gérer le fetching de données dans une table , je me retrouve avec 4 $companyIds dont le premier contient plus de 100000 enregistrements le 2eme 5000 etc, et ma requete prend un temps fou..

Merci a vous

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
public static function getStockByItemGroup(string $companyName, $grouped, $to = null)
    {
        $data = [];
        $companyIds = $companyName != 'all' ? [$companyName] : array_keys(config('app.company_ids'));
        foreach ($companyIds as $companyId) {
            $result = self::selectRaw("group_id, dates_format(posting_date, '" . $grouped . "') as posting_date, items.unit_cost * sum(quantity) as cost");
            if ($to) {
                $result = $result->where('posting_date', '<=', $to);
            }
 
            $data[] = $result->where('stocks.company_id', $companyId)
                ->join('items', 'stocks.item_id', 'items.item_id')
                ->where('items.company_id', $companyId)
                ->groupBy('group_id', 'unit_cost', 'posting_date')
                ->orderBy('posting_date', 'asc')
                ->get();
 
        }
        return Arr::flatten($data);
    }