"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Conversion des collections en requêtes dans Laravel en utilisant Taquery ()

Conversion des collections en requêtes dans Laravel en utilisant Taquery ()

Publié le 2025-03-07
Parcourir:242

Converting Collections to Queries in Laravel Using toQuery()

Laravel's toquery () Méthode: gérer efficacement les grands ensembles de données

Lors du traitement de grands ensembles de données dans Laravel, il est crucial de fonctionner et de traiter les données de manière flexible. Bien que les collections fournissent de puissantes méthodes de manipulation de réseau, parfois pour l'efficacité, nous devons revenir aux opérations du constructeur de requête. La méthode de Laravel Taquery () comble cet écart en convertissant le retrait au générateur de requête, permettant des opérations au niveau de la base de données sur l'ensemble de données filtré.

utilisez taquery ()

] La méthode

toquery () convertit la collection éloquente en instance de générateur de requête, permettant de puissants appels de chaîne opérationnelle:

// 基本转换
$users = User::where('status', 'active')->get();

$userQuery = $users->toQuery();

Application pratique

Créons un système de traitement des commandes avec des opérations de lots efficaces:

where('scheduled_date', now())
            ->get();

        DB::transaction(function() use ($orders) {
            // 将集合转换为查询以进行批量更新
            $orders->toQuery()->update([
                'status' => 'processing',
                'processed_at' => now()
            ]);
            // 链式调用其他操作
            $ordersByRegion = $orders->toQuery()
                ->join('warehouses', 'orders.warehouse_id', '=', 'warehouses.id')
                ->select('warehouses.region', DB::raw('count(*) as count'))
                ->groupBy('region')
                ->get();

            event(new OrdersProcessed($ordersByRegion));
        });
    }

    public function updatePriorities()
    {
        $urgentOrders = Order::where('priority', 'high')->get();

        $urgentOrders->toQuery()
            ->select('orders.*', 'customers.tier')
            ->join('customers', 'orders.customer_id', '=', 'customers.id')
            ->where('customers.tier', 'vip')
            ->update(['priority' => 'critical']);
    }
}

Cette implémentation démontre:

  • mises à jour par lots à l'aide de la transaction garantie
  • Opération de connexion après conversion de collection
  • agrégation et regroupement

En tirant parti de toquery () , vous pouvez basculer de manière transparente entre les opérations de collection et de création de requête, ce qui rend vos applications Laravel plus efficaces et rendant votre interaction de base de données plus flexible.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3