Rumah > pembangunan bahagian belakang > tutorial php > Menukar Koleksi ke Pertanyaan di Laravel menggunakan Toquery ()

Menukar Koleksi ke Pertanyaan di Laravel menggunakan Toquery ()

James Robert Taylor
Lepaskan: 2025-03-07 00:46:08
asal
731 orang telah melayarinya

Converting Collections to Queries in Laravel Using toQuery()

kaedah Laravel: Proses Dataset Besar

dengan cekap toQuery()

manipulasi fleksibel dan data pemprosesan adalah penting apabila memproses dataset besar di Laravel. Walaupun koleksi menyediakan kaedah manipulasi array yang kuat, kadang -kadang untuk kecekapan kita perlu beralih ke operasi pembina pertanyaan. Kaedah

Laravel menjembatani jurang ini dengan menukar set kembali ke pembina pertanyaan, membolehkan operasi peringkat pangkalan data pada dataset yang ditapis. toQuery()

Penggunaan

toQuery() Kaedah

menukarkan koleksi fasih kembali ke contoh pembina pertanyaan, yang membolehkan panggilan rantaian operasi yang kuat: toQuery()

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

$userQuery = $users->toQuery();
Salin selepas log masuk
Aplikasi Praktikal

mari kita membina sistem pemprosesan pesanan dengan operasi batch yang cekap:

<?php namespace App\Services;

use App\Models\Order;
use App\Events\OrdersProcessed;
use Illuminate\Support\Facades\DB;

class OrderProcessor
{
    public function processReadyOrders()
    {
        $orders = Order::where('status', 'ready')
            ->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']);
    }
}
Salin selepas log masuk
Pelaksanaan ini menunjukkan:

    kemas kini batch menggunakan urus niaga yang dijamin
  • operasi sambungan selepas penukaran koleksi
  • Agregasi dan kumpulan
Dengan memanfaatkan

, anda boleh beralih dengan lancar antara pengumpulan dan operasi pembina pertanyaan, menjadikan aplikasi Laravel anda lebih cekap dan menjadikan interaksi pangkalan data anda lebih fleksibel. toQuery()

Atas ialah kandungan terperinci Menukar Koleksi ke Pertanyaan di Laravel menggunakan Toquery (). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan