dengan cekap toQuery()
Laravel menjembatani jurang ini dengan menukar set kembali ke pembina pertanyaan, membolehkan operasi peringkat pangkalan data pada dataset yang ditapis. toQuery()
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();
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']); } }
, 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!