FR Français
Version: v2.3.0

raw

Medoo fournit des expressions SQL brutes pour les requêtes complexes et hautement personnalisables. Ces expressions prennent également en charge les placeholders pour limiter le risque d’injection SQL, ainsi qu’une syntaxe abrégée pour citer les identifiants.

Medoo::raw($query, $map)

Syntaxe

Les expressions SQL brutes offrent une syntaxe abrégée pour citer les identifiants. Utilisez <name> pour marquer une colonne (ou une colonne qualifiée par une table), et Medoo appliquera automatiquement les guillemets nécessaires.
Medoo::raw("AVG(<weight>)")

Pour les colonnes

Vous pouvez utiliser un objet Raw dans la sélection des colonnes de select() ou get(). La clé du tableau devient alors l'alias dans le résultat.
$data = $database->get('account', [
	'user_name',
	'score' => Medoo::raw('SUM(<age> + <experience>)')
], [
	'user_id' => 100
]);
SELECT "user_name", SUM("age" + "experience") AS "score"
FROM "WP_account"
WHERE "user_id" = 100

Pour les instructions UPDATE et INSERT

Les objets Raw peuvent également être utilisés comme valeurs de colonne dans insert() et update().
$data = $database->insert('account', [
	'user_name' => 'apple',
	'user_id' => Medoo::raw('UUID()')
]);

$data = $database->update('account', [
	'user_name' => 'apple',
	'user_id' => Medoo::raw('UUID()')
], [
	'age[>]' => 10
]);

Pour les clauses WHERE

Les objets Raw peuvent être utilisés dans le tableau where pour écrire des expressions plus avancées.
$data = $database->select('account', [
	'user_name',
	'user_id',
], [
	'datetime[>=]' => Medoo::raw('DATE_SUB(NOW(), INTERVAL 1 DAY)'),
	'ORDER' => Medoo::raw('RAND()'),
	'LIMIT' => 10
]);
SELECT "user_name", "user_id"
FROM "account"
WHERE "datetime" >= DATE_SUB(NOW(), INTERVAL 1 DAY)
ORDER BY RAND()
LIMIT 10

Avec une requête préparée

Si les expressions SQL brutes contiennent des valeurs provenant de variables ou de saisies utilisateur, utilisez des placeholders dans une requête préparée pour éviter l'injection SQL.
$today = "2017-05-01";

$database->select('account', [
	'user_id',
	'user_name'
], [
	'datetime' => Medoo::raw('DATE_ADD(:today, INTERVAL 10 DAY)', [
		':today' => $today
	])
]);

Comme clause WHERE

Vous pouvez également utiliser un objet Raw comme clause WHERE complète pour un filtrage plus avancé.
$data = $database->select('account', [
		'user_id',
		'email'
	],
	Medoo::raw('WHERE
		LENGTH(<user_name>) > 5
		ORDER BY RAND()
		LIMIT 10
	')
);
SELECT "user_id", "email"
FROM "account"
WHERE LENGTH("user_name") > 5
ORDER BY RAND()
LIMIT 10