Raw Object
Medoo可以使用原始表达式来进行复杂的或自定义的查询,尤其是在使用SQL内置函数的时候.支持占位符号,以防止注入和优化语法.
Medoo::raw($query, $map)
查询列中使用
可以直接在select()中做为字段查出,这时候key值将做为别名使用
$data = $database->get('account', [
'user_name',
'user_id',
'score' => Medoo::raw('SUM( + )')
], [
'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()')
]);
调用变量或传参数
使用变量或者传入参数进来,可以防止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() > 5
ORDER BY RAND()
LIMIT 10
')
);