如果你对该文章中的内容有疑问/不解,可以点击此处链接提问
要注明问题和此文章链接地址 点击此处跳转
设置带版本号的路由
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模型(关系对象映射)
操作的是对象,返回的是模型对象
命令行:
php think make:model api/Usermodel
使用方法
1.静态方法
$banner = BannerModel::get($id);
2.实例对象调用
常用动词区别:
get:1条数据
find:1条数据
all:多组数据
select:多组数据
使用Db时,可以使用 find和select,不能使用另外两种
使用模型时,都可以使用
orm模型中引入其他model
BannerModel.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'];