thinkphp 8 安装 | 查询 | 模型 | 关联表
安装
环境切换
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
检测
composer config -g -l
安装 目录tp
composer create-project topthink/think tp
自定义控制器 出现问题,No input file specified.
注意修改 入口文件下的 .htaccess
RewriteRule ^(.*)$ /index.php?/$1 [L]
链接数据库
1. 查询
// 引入Db数据库类 use think\facade\Db;
class User extends Basecontroller
{ public function get()
{ // 连接user表,查询 Suser = Db::table("user")->select(); // 输出数据 return json($user),
}
}
1.table方法
Db类旗下有一个 table 静态调用的方法,参数为完整的表名(前缀都不能省略);
如果希望只查询一条数据,可以使用** find() **方法,需指定 where 条件:
// 通过ID查询指定的数据
// find 方法查询结果不存在,返回 nu11,否则返回结果数组
$user = Db::table("user")->where("id",1)->find();
$user = Db::name("user")->where("id",1)->find();
查询单个字段值
数据新增
1. 添加1条数据 insert ()
使用 insertGetld()方法,可以在新增成功后返回当前数据 ID; 如果想强行新增,抛弃不存在的字段数据,则使用 strick(false)方法,忽略异常; // 新增数据时,主键冲突时,直接修改这条记录 Db::name("user")->replace()->insert($data);
2. 插入多条数据
3. 更新数据 update()
数值自增 自减
使用 Db::raw()来设置每个字段的特殊需求,灵活且清晰
save()方法是一个通用方法,可以自行判断是新增还是修改(更新)数据
4. 数据删除 delete ()
表达式查询
in 的使用
案例
条件
前台页面代码
表单前台显示
表单代码
前台搜索数据 留置的代码
查询语句 后台逻辑代码
// join 连表
// field 要提取的字段 (x.* ) xsb 所有字段 , s.szx as sname s表中的szx 字段取 别名 sname
// alias 别名
连贯操作
field () 字段 group() having () 的使用
其他查询 xsb数据表 szx 数据表中的字段
cache() 保存 文件位置 缓存本地文件 节省查询资源 cache( '缓存名字', '时间60')
redis 效果更好
聚合查询 查询xsb 有多少条数据 . count () max() 最大数 min()最小数 avg()平均数 sum () ...
模型
1.定义模型
// 一般情况下 模型类名 和 表名(去前缀)一致
// 所有的自定义的模型类一定要继承基础模型类 think\Model
使用方法 规则 :
案例 展示 :
简单模型查询 1
简单查询 2 引入user
protected 模型设置表名
如果 user 与 数据库表名不一致 , 需要单独设置
模型设置主键
模型查询数据 :
模型新增
案例
字段 添加
数组添加
字段限制
模型新增也提供了 replace()方法来实现 REPLACE into 新增;
批量添加
使用 ::create()静态方法,来创建要新增的数据
模型数据删除
软删除
案例 :
前台代码
后台逻辑代码
模型更新操作
字段数量增加
批量修改
修改数据静态方法 :
模型字段设置
废弃字段
设置只读字段
获取器
1.获取器
获取器的作用是对模型实例的数据做出自动处理;
一个获取器对应模型的一个特殊方法,该方法为 public; 方法名的命名规范为:getFieldAttr();
举个例子,数据库表示状态 status 字段采用的是数值;
而页面上,我们需要输出 status 字段希望是中文,就可以使用获取器
设置状态 商品
修改器
搜索器
使用方法
// $query 第一个参数 模型对象
// $value 第二个参数 搜索数组中该字段对应值
// $data 第三个 参数 搜索的数组
设置
使用
实战代码
简单搜索 效果 代码
前台页面
后台代码
withSearch(['xm' , 'sex' ], $get )
搜索的使用方法
文本的取值 姓名的条件
单选框的 性别的 条件
年龄范围的取值 , 值对不上用data
复选框的 取值 值能对上 用value
1.关联表
1 : 1
方法步骤
关联完成
案例 创建 模型 1
创建 模型 2 方法名 随便写 profile() abc () 都可以
控制器
注意 :
可以修改数据
--------------------------------------------------
查询:
1 : 多
新增
与载入
多对多
使用方法
多对多的数据添加