Tips
18 березня 2026
select() - припинити завантаження зайвих колонок
Завантаження повного рядка користувача з 20 колонками. Потрібні тільки ім'я та email.
База даних надсилає всі дані. Пам'ять витрачається. Запит повільніший.
Рішення:
Використовувати select() щоб вказати точні колонки. Швидші запити, менше пам'яті.
Важливо:
Завжди включай первинний ключ (id) щоб зв'язки працювали.
Просунуте:
Використовувати addSelect() щоб додати колонки до існуючого select.
Порада: Особливо важливо для таблиць з TEXT/BLOB колонками або таблиць з 20+ колонками.
// ПОГАНО: Завантажує всі колонки
$users = User::all();
foreach ($users as $user) {
echo $user->name; // Інші 18 колонок витрачені даремно
}
// ДОБРЕ: Тільки те що потрібно
$users = User::select('id', 'name', 'email')->get();
// Додавати колонки динамічно
$query = User::select('id', 'name');
if ($needEmail) {
$query->addSelect('email');
}
// Зі зв'язками - потрібні зовнішні ключі
$posts = Post::select('id', 'title', 'user_id')
->with('author:id,name')
->get();
// Агрегація без завантаження моделей
$totalViews = Post::sum('views');
$avgRating = Post::avg('rating');
$maxPrice = Product::max('price');