Πώς να γράψετε ερωτήματα 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