tp5遇到的一些问题记录

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助手函数,一旦混用将会给您的开发带来很多不必要的麻烦。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值