thinkphp5 model类:protected hiddden 用于父类对象隐藏属性;传统连接数据库的方法和语句:tp5连接数据库的方法:Db::connect('mysql://root:1234@127.0.0.1:3306/thinkphp#utf8');
model中查询数据库的方式:1、model中关系函数的应用:Db::query('select * from think_user where id=?',[8]);Db::execute('insert into think_user (id, name) values (?, ?)',[8,'thinkphp']);2、查询构造器:(1)查询数据:Db::table('think_user')->where('id',1)->find();/Db::name('user')->where('id',1)->find();Db::name('user')->where('status',1)->select();/db('user',[],false)->where('status',1)->select();db函数如果需要采用相同的链接,可以传入第三个参数/一个数据库连接,第二个参数为数据库的连接参数,留空表示采用数据库配置文件的配置.db助手函数默认不再强制重新连接。/使用Query对象或闭包查询:1、$query=new\think\db\Query();$query->table('think_user')->where('status',1);Db::find($query);Db::select($query);2、Db::select(function($query){$query->table('think_user')->where('status',1);});/值和列查询:// 返回某个字段的值Db::table('think_user')->where('id',1)->value('name');// 返回数组Db::table('think_user')->where('status',1)->column('name');// 指定索引Db::table('think_user')->where('status',1)->column('name','id');///数据集分批处理:如果你需要处理成千上百条数据库记录,可以考虑使用chunk方法,该方法一次获取结果集的一小块,然后填充每一小块数据到要处理的闭包,该方法在编写处理大量数据库记录的时候非常有用:chunk方法支持指定处理数据的顺序。Db::table('think_user')->chunk(100,function($users){// 处理结果集...returnfalse;},'create_time','desc');(2)添加数据:
model关联属性:(1)一对一关联:关联表的查询条件查询当前模型的数据:$user=User::hasWhere('profile',['email'=>'thinkphp@qq.com'])->find();关联新增:$user->profile->save(['email'=>'thinkphp']);定义相对的关联:publicfunctionuser(){return$this->belongsTo('User','uid');}绑定属性到父模型:return$this->hasOne('Profile','uid')->bind('nickname,email')使用together方法更方便的进行关联自动写入操作:(2)一对多关联:publicfunctioncomments(){return$this->hasMany('Comment')->field('id,author,content');}关联查询:$article=Article::get(1);// 获取文章的所有评论dump($article->comments);// 也可以进行条件搜索dump($article->comments()->where('status',1)->select());根据关联条件查询:// 查询评论超过3个的文章$list=Article::has('comments','>',3)->select();// 查询评论状态正常的文章$list=Article::hasWhere('comments',['status'=>1])->select();关联新增:$article->comments()->save(['content'=>'test']);(3)远程一对多:hasManyThrough('关联模型名','中间模型名','外键名','中间模型关联键名','当前模型主键名',['模型别名定义']);(4)多对多关联:
redis: