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 ') );