// Обчислення на стороні бази даних
$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();