欢迎光临
感谢一路有你

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模型中引入其他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'];

 

 

 

 

赞(0) 打赏
未经允许不得转载:王明昌博客 » tp5+小程序开发笔记(五)数据库操作
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏