Latte'de SQL sorguları nasıl yazılır?
Latte, gerçekten karmaşık SQL sorgularını daha okunabilir biçimde üretmek için de işe yarayabilir.
Bir SQL sorgusunun kurulması çok sayıda koşul ve değişken içeriyorsa, onu Latte'de yazmak anlaşılırlığı belirgin biçimde artırabilir. İşte çok basit bir örnek:
SELECT users.* FROM users
LEFT JOIN users_groups ON users.user_id = users_groups.user_id
LEFT JOIN groups ON groups.group_id = users_groups.group_id
{ifset $country} LEFT JOIN country ON country.country_id = users.country_id {/ifset}
WHERE groups.name = 'Admins' {ifset $country} AND country.name = {$country} {/ifset}
$latte->setContentType() ile Latte'ye içeriği düz metin (HTML değil) olarak ele almasını söyleriz.
Sonra, dizeleri düzgün biçimde kaçırmak için veritabanı sürücüsünü kullanan bir kaçış fonksiyonu hazırlarız:
$db = new PDO(/* ... */);
$latte = new Latte\Engine;
$latte->setContentType(Latte\ContentType::Text);
$latte->addFilter('escape', fn($val) => match (true) {
is_string($val) => $db->quote($val),
is_int($val), is_float($val) => (string) $val,
is_bool($val) => $val ? '1' : '0',
is_null($val) => 'NULL',
default => throw new Exception('Unsupported type'),
});
Kullanımı şöyle görünürdü:
$sql = $latte->renderToString('query.sql.latte', ['country' => $country]);
$result = $db->query($sql);
Bu örnek Latte v3.0.5 veya üstünü gerektirir.