数据库操作

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

视图输出显示:{$vo.cate.catename}

普通查询:

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

});

你可能感兴趣的:(数据库操作)