Thinkphp5.0 的实践一

mac2022-06-30  20

Thinkphp5.0 的实践一


 tp5.0默认没有__SELF__,需要定义,

define('__SELF__',strip_tags($_SERVER['REQUEST_URI']));

tp5.0默认没有NOW_TIME,需要定义,

define('NOW_TIME',$_SERVER['REQUEST_TIME']);
tp5的sql使用concat函数报错: $model = new User(); $where = ['id'=>['<',30]]; $priData = $model->where($where)->order('concat(pri_path,"-",id) asc')->buildSql(); dump($priData); 打印出来的SQL语句是: SELECT * FROM `user` WHERE `id` < 30 ORDER BY `concat(pri_path`,`"-"`,`id)` ASCSQL语句中把concat()函数当做字段用反引号引起来了,报如下错误:

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'sort`` ASC,`concat(`pri_path``,`'-'`,``id`)` ASC' at line 1。


 

order()排序无法使用,

解决方法一(使用字段别名)

$model = new User(); $where = ['id'=>['<',30]]; $priData = $model->where($where)->field("id,concat(`pri_path`,'-',`id`) as names")->order('names asc')->buildSql(); dump($priData);

 

解决方法二(使用原生SQL语句):

$db_config = Config('database'); $db_prefix = $db_config['prefix']; $in_id = '1,2,3,4'; $priData = Db::query("select * from {$db_prefix}user WHERE `id` IN ({$in_id}) order by `sort` asc,CONCAT(`pri_path`,'-',`id`) asc");

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/gyfluck/p/9437386.html

相关资源:ThinkPHP v5.0 正式版.zip
最新回复(0)