pdo

优质
小牛编辑
130浏览
2023-12-01

Raw Object

Medoo可以使用原始表达式来进行复杂的或自定义的查询,尤其是在使用SQL内置函数的时候.支持占位符号,以防止注入和优化语法.

Medoo::raw($query, $map)

查询列中使用

可以直接在select()中做为字段查出,这时候key值将做为别名使用
$data = $database->get('account', [
	'user_name',
	'user_id',
	'score' => Medoo::raw('SUM(<age> + <experience>)')
], [
	'user_id' => 100
]);

// SELECT "user_name", "user_id", SUM("age" + "experience") AS "score"
// FROM "WP_account"
// WHERE "user_id" > 100

在Update和Insert使用

$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
]);

Where条件中使用

$data = $database->select('account', [
	'user_name',
	'user_id',
], [
	'datetime' => Medoo::raw('NOW()'),
	'ORDER' => Medoo::raw('RAND()'),
	'LIMIT' => Medoo::raw('AVG(<age>)')
]);

调用变量或传参数

使用变量或者传入参数进来,可以防止SQL注入等问题
$today = "2017-05-01";

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

直接做为where条件

可以直接使用原始对象来构建条件语句
$data = $database->select('account', [
		'user_id',
		'email'
	],
	Medoo::raw('WHERE
		LENGTH(<user_name>) > 5
        ORDER BY RAND()
        LIMIT 10
    ')
);