1.$acc = db(‘article_cate’)->where(‘updatetime’,‘exp’,’>addtime-5’)->select();
使用exp 方法可以使用sql的语法和函数,就可以比较一条表内的两个字段的值的大小
2. $list =db(‘article’)->where(‘cateid!=2’)->field(‘ifnull(cateid,"") as cateid’ )->select();
tp5查询的时候给为null的字段赋值的方法
3.not exists 用tp5的写法
$sql1 = db(‘article’)->alias(‘b’)->where(‘a.id=b.cateid’)->buildSql();
$list = db('article')->alias('a')->where("NOT EXISTS($sql1)")->select();
4.tp5.1出现事务未报错,但是数据库没有操作成功的情况
出现错误时的代码:
$res = Db::name('connect')->insertGetId($data);
db('con_tag')->insert(['tag_id'=>1,'con_id'=>$res]);
修改后成功的代码:
$res = Db::name('connect')->insertGetId($data);
Db::name('con_tag')->insert(['tag_id'=>1,'con_id'=>$res]);
1个是用Db类进行的添加,一个是用db助手函数的添加。经测试发现是因为同时用了Db类和db助手函数,Db类先连接数据库,然后db助手函数再次连接数据库,导致了Db类连接数据库的无效。如果正常操作是按照先后顺序插入数据库的,两条操作都可以成功,但是在事务中,是两条操作都已经进行了,但是没操作数据库,先进行的事务的操作,导致事务进行完了但是Db类的连接数据库就被重置了,所以出现了第一条添加的失败和第二条添加的成功。而且db助手函数的sql报错不会导致事务回滚,即虽然使用了事务但是实际上事务并没有生效。
最后再说一下代码的规范问题,使用推荐要么使用Db类,要么使用db助手函数,一旦混用将会给您的开发带来很多不必要的麻烦。