设置带版本号的路由
1 |
Route::get('api/v1/banner/:id','api/v1.banner/getBanner'); |
1.tp5原生sql
1 2 |
use think\Db; Db::query("select * from user where id=?",[$id]); |
2.查询构建器
1 2 3 4 5 |
Db::table('user')->where('id','=',$id)->find(); select update delete insert |
where参数
1 |
where('字段名','表达式','查询条件') |
fetchsql
不执行,输出sql语句
1 |
Db::table('user')->fetchSql()->where('id','=',$id)->find(); |
如果log被关闭了,但是想要记录sql的日志,在入口文件添加:
1 2 3 4 5 |
\think\Log::init([ 'type'=>'File', 'path'=>LOG_PATH, 'level'=>['sql'] ]); |
3.ORM模型(关系对象映射)
操作的是对象,返回的是模型对象
命令行:
1 |
php think make:model api/Usermodel |
使用方法
1.静态方法
$banner = BannerModel::get($id);
2.实例对象调用
常用动词区别:
get:1条数据
find:1条数据
all:多组数据
select:多组数据
使用Db时,可以使用 find和select,不能使用另外两种
使用模型时,都可以使用
orm模型中引入其他model
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
BannerModel.php中使用BannerItemModel.php 在BannerModel中添加 <span style="color: #ff0000;">1对多</span> public function item(){ return $this->hasMany('BannerItemModel','banner_id','id'); } 使用方法: 在控制器中: $banner = BannerModel::with('item')->find($id); 引入多个可使用数组的形式,如:$banner = BannerModel::with(['item','cccc2'])->find($id); <span style="color: #ff0000;">1对1</span> public function img(){ return $this->belongsTo('Image','image_id','id'); } banner中即使用BannerItemModel 又使用Image controller <span style="color: #ff0000;">$banner = BannerModel::with(['items','items.img'])->find($id); model $banner = self::with(['items','items.img'])->find($id); </span> |
隐藏字段
1.麻烦,有时需要循环
1 2 3 4 5 6 |
资源转数组 $data = $banner->toArray(); unset($data['create_time']); 资源转json $data = $banner->toJson(); |
2.建议使用
1 2 3 4 5 6 7 8 |
隐藏属性 $banner->hidden(['create_time']); 显示属性 $banner->visible(['id','name']); 模型内部item的隐藏 protected $hidden=['id']; |