Latte'de SQL Sorguları Nasıl Yazılır?
Latte, gerçekten karmaşık SQL sorguları oluşturmak için de kullanışlı olabilir.
Bir SQL sorgusunun oluşturulması bir dizi koşul ve değişken içeriyorsa, Latte'de yazmak gerçekten daha net olabilir. Ç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()
kullanarak Latte'ye içeriği düz metin olarak (HTML olarak değil) ele almasını
söyleriz ve ayrıca dizeleri doğrudan veritabanı sürücüsüyle kaçıracak 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ür:
$sql = $latte->renderToString('query.sql.latte', ['country' => $country]);
$result = $db->query($sql);
Belirtilen örnek Latte v3.0.5 veya üstünü gerektirir.