Πώς να γράψετε ερωτήματα SQL στο Latte;

Το Latte μπορεί επίσης να είναι χρήσιμο για τη δημιουργία πραγματικά σύνθετων ερωτημάτων SQL.

Εάν η δημιουργία ενός ερωτήματος SQL περιλαμβάνει έναν αριθμό συνθηκών και μεταβλητών, μπορεί να είναι πραγματικά πιο σαφές να το γράψετε στο Latte. Ένα πολύ απλό παράδειγμα:

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(), λέμε στο Latte να αντιμετωπίζει το περιεχόμενο ως απλό κείμενο (όχι ως HTML) και στη συνέχεια προετοιμάζουμε μια συνάρτηση διαφυγής που θα διαφεύγει τις συμβολοσειρές απευθείας με τον οδηγό της βάσης δεδομένων:

$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'),
});

Η χρήση θα έμοιαζε ως εξής:

$sql = $latte->renderToString('query.sql.latte', ['country' => $country]);
$result = $db->query($sql);

Το παρεχόμενο παράδειγμα απαιτεί Latte v3.0.5 ή νεότερη έκδοση.

έκδοση: 3.0