Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти
Інше
Події Про нас

Tips & Tricks: статті за тегом «SQL»

Статті, новини, туторіали та переклади від учасників спільноти

No results.
Tips 01 липня 2026

selectRaw() для обчислюваних колонок

Потрібні обчислені колонки без завантаження повних моделей?

selectRaw() робить обчислення на рівні SQL. База даних обробляє. Повертає тільки результати.

Поширене використання:

  • Ціна з податком
  • Вік з дати народження
  • Обчислення відстані
  • Об'єднані рядки

Виграш продуктивності:

База даних робить математику. Не PHP. Повертає тільки те що потрібно.

Порада: Завжди використовувати parameter binding щоб запобігти SQL ін'єкції.

// Обчислення на стороні бази даних
$products = Product::selectRaw('
    id,
    name,
    price,
    price * 1.2 as price_with_tax,
    price * quantity as total
')->get();

// Обчислення віку
$users = User::selectRaw('
    id,
    name,
    YEAR(CURDATE()) - YEAR(birthdate) as age
')->get();

// Конкатенація
$users = User::selectRaw("
    CONCAT(first_name, ' ', last_name) as full_name,
    email
")->get();

// Безпечний parameter binding
$taxRate = 1.15;
$products = Product::selectRaw(
    'price * ? as price_with_tax',
    [$taxRate]
)->get();
// Обчислення відстані
$lat = 40.7128;
$lng = -74.0060;

$stores = Store::selectRaw("
    *,
    (6371 * acos(cos(radians(?))
    * cos(radians(lat))
    * cos(radians(lng) - radians(?))
    + sin(radians(?))
    * sin(radians(lat)))) AS distance
", [$lat, $lng, $lat])
    ->having('distance', '<', 10)
    ->orderBy('distance')
    ->get();

// Складні обчислення з декількома параметрами
$discount = 0.1;
$minPrice = 100;

$items = Product::selectRaw('
    id,
    name,
    price,
    price * (1 - ?) as discounted_price,
    CASE WHEN price > ? THEN "premium" ELSE "standard" END as tier
', [$discount, $minPrice])->get();