Latte'de SQL Sorguları Nasıl Yazılır?
Latte, gerçekten karmaşık SQL sorguları oluşturmak için de yararlı olabilir.
Bir SQL sorgusunun oluşturulması birçok koşul ve değişken içeriyorsa, bunu 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()
adresini kullanarak Latte'ye içeriği düz metin (HTML olarak değil) olarak ele
almasını ve ardından, dizeleri doğrudan veritabanı sürücüsü tarafından kaçan bir kaçış işlevi 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 şu şekilde olacaktır:
$sql = $latte->renderToString('query.sql.latte', ['country' => $country]);
$result = $db->query($sql);
Bu örnek Latte v3.0.5 veya üstünü gerektirmektedir.