tp5+小程序开发笔记(五)数据库操作
设置带版本号的路由
Route::get('api/v1/banner/:id','api/v1.banner/getBanner'); 1.tp5原生sql
use think\Db;
Db::query("select * from user where id=?",[$id]); 2.查询构建器
Db::table('user')->where('id','=',$id)->find();
select
update
delete
insert where参数 where('字段名','表达式','查询条件') fetchsql 不执行,输出sql语句 Db::table('user')->fetchSql()->where('id','=',$id)->find(); 如果log被关闭了,但是想要记录sql的日志,在入口文件添加: \think\Log::init([ 'type'=>'File', 'path'=>LOG_PATH, 'level'=>['sql'] ]);
3.ORM模型(关系对象映射)
操作的是对象,返回的是模型对象 参考文章:tp5controller与model使用数据库 命令行:php think make:model api/Usermodel使用方法 1.静态方法 $banner = BannerModel::get($id); 2.实例对象调用
常用动词区别:
get:1条数据 find:1条数据 all:多组数据 select:多组数据 使用Db时,可以使用 find和select,不能使用另外两种 使用模型时,都可以使用 orm模型中引入其他modelBannerModel.php中使用BannerItemModel.php 在BannerModel中添加 1对多 public function item(){ return $this->hasMany('BannerItemModel','banner_id','id'); } 使用方法: 在控制器中: $banner = BannerModel::with('item')->find($id); 引入多个可使用数组的形式,如:$banner = BannerModel::with(['item','cccc2'])->find($id); 1对1 public function img(){ return $this->belongsTo('Image','image_id','id'); } banner中即使用BannerItemModel 又使用Image controller $banner = BannerModel::with(['items','items.img'])->find($id); model $banner = self::with(['items','items.img'])->find($id);
隐藏字段
1.麻烦,有时需要循环资源转数组 $data = $banner->toArray(); unset($data['create_time']); 资源转json $data = $banner->toJson();2.建议使用
隐藏属性 $banner->hidden(['create_time']); 显示属性 $banner->visible(['id','name']); 模型内部item的隐藏 protected $hidden=['id'];
本站文章如未注明出处均为原创,转载请注明出处,如有侵权请邮件联系站长。