用sql语句的写法:
查询用query 增删改用execute
$result2 = Db::connect('db2') ->query('select * from tp_data where id = 6'); 接数据库db2进行操作
$result3 = Db::connect('db3') ->execute('TRUNCATE table tp_data');接数据库db3进行操作
连接不同数据库的使用 前提要在database配置文件中 进行配置
1、查询
关联查询以及分页
方法一:$list = Db::name('article')->alias('a')->join('cate c','c.id=a.cateid')->field('a.id,a.title,a.pic,a.author,a.static,c.catename')->paginate(3);
方法二:使用关联模型,在article模型中定义归从关系:
在控制器中正常查询:$list = ArticleModel::paginate(5);
视图输出显示:<td align="center">{$vo.cate.catename}</td>
普通查询:
Db::name('data')->where('id',16)->value('name');//指定行name列的值
Db::name('data')->where('id',16)->column('name');//指定行name列的所有值
Db::name('users')->find();//一条数据
Db::name('user')->where('status',1)->field('id,name')->order('id','desc')->limit(10)->select();//全部
2、模型查询
Users::get(1);//查询users表中主键为1的数据
Users::where('mobile','182')->find();//查询users表中mobile为182的数据
Users::getByMoile(182);//查询users表中mobile为182的数据
3、条件写法
Db::name('users')->where('id','<>',4)->select();
Db::name('users')->where('id','in',[1,2,3,4,5,6])->select();
Db::name('users')->where('id','between',[1,6])->select();
Db::name('users')->where('id','>=',1)
->where('name','like','%php%')
->select();
Db::name('users')->where('id|status','>',0)
Db::name('users')->where('name','like','%think%')
->where('id',['in',[1,2,3]],['>=',1],'or')
->select();
等同于:select * from users where 'name' like '%think%' and ('id' in (1,2,3) or 'id' >= 1 )
使用exp条件表达式,表示后面是原生的sql语句表达式
Db::name('users')->where('id','exp'," >1 and name ='111'")->select();
时间查询
Db::name('users')->whereTime('reg_time','>','2016-01-01')->select();
//此查询自动将日期转换成时间戳,与数据库中的时间戳比较大小
Db::name('users')->whereTime('reg_time','>','this week')->select();
//查询本周一之后的
Db::name('users')->whereTime('reg_time','>','last week')->select();
//查询上周的
Db::name('users')->whereTime('reg_time','>','-2 days')->select();
//查询最近两天的
Db::name('users')->whereTime('reg_time','>','today')->select();
//查询今天的
Db::name('users')->whereTime('reg_time','between',['2016-1-1','2017-1-1'])->select();
//查询2016-1-1~2017-1-1的数据(含)
4、多表查询也叫视图
Db::view('data','id,name,status') //查data表的id,name,status字段
->view('users',['nickname'=>'user_name','mobile','email'],'users.user_id = data.id')
//查users表的nickname(别名为user_name),mobile,email 通过user_id和id进行关联
->where('data.status',1)
->order('id desc')->select();
3、事务
mysql操作的表类型要设置为InnoDB 才能支持事务 要么全部成功 要么全部失败
Db::transaction(function (){//放事务代码});
例如:
Db::transaction(function (){
Db::name('data')->delete(1);
Db::name('data')->insert(['id'=>6,'name'=>'tp','status'=>1]);
});
网友评论