toBase() - скидання накладних витрат Eloquent
Потрібна сира продуктивність? Eloquent моделі додають накладні витрати.
toBase() конвертує запит в базовий query builder. Без гідратації моделі.
Повертає stdClass замість моделей. Швидше. Менше пам'яті.
Коли використовувати:
- Великі експорти де не потрібні методи моделі
- Запити агрегації
- Трансформація даних перед відправкою в API
- Фонова обробка
Компроміс:
Немає accessors, mutators або зв'язків. Тільки сирі дані.
Порада: Використовувати для операцій тільки читання на великих наборах даних.
// ПОГАНО: Створює 10,000 Eloquent моделей
$users = User::where('active', true)->get();
// ДОБРЕ: Повертає stdClass об'єкти
$users = User::where('active', true)
->toBase()
->get();
// Приклад: Експорт в CSV
$users = User::select('name', 'email')
->toBase()
->get();
foreach ($users as $user) {
// $user це stdClass, не User модель
fputcsv($file, [$user->name, $user->email]);
}
// Працює з chunk теж
User::where('active', true)
->toBase()
->chunk(1000, function($users) {
// Обробка без накладних витрат моделі
});