请选择 进入手机版 | 继续访问电脑版

【综合教程】Thinkphp8学习知识点汇总(全集)

[复制链接]
查看75 | 回复0 | 2024-1-23 22:19 | 显示全部楼层 |阅读模式
【综合教程】Thinkphp8学习知识点汇总(全集)

1,基础控制器
- 一般来说,创建控制器后,推荐继承基础控制器来获得更多的功能方法;
- 基础控制器仅仅提供了控制器验证功能,并注入了think\App和think\Request;
- 这两个对象后面会有章节详细讲解,下面我们继承并简单使用一下;
  1. namespace app\controller;
  2. use app\BaseController;
  3. class User extends BaseController
  4. {
  5.     public function index()
  6.     {
  7.         // 返回实际路径
  8.         return $this->app->getBasePath();
  9.         // 返回当前方法名
  10.         return $this->request->action();
  11.     }
  12. }
复制代码

2,空控制器
空控制器一般用于载入不存在的控制器时,进行错误提示;
  1. class Error
  2. {
  3.     public function __call(string $name, array $arguments)
  4.     {
  5.         return "当前控制器不存在!";
  6.     }
  7. }
复制代码

3,thinkphp8教程打印最后一条执行sql语句代码
4,使用 findOrEmpty() 方法也可以查询一条数据,但在没有数据时返回一个空数组
  1. // 没有数据返回空数组
  2. $user = Db::table("user")->where("id", 11)->findOrEmpty();
复制代码
5,使用 findOrFail() 方法同样可以查询一条数据,在没有数据时抛出一个异常:
  1. // 没有数据抛出异常
  2. $user = Db::table("user")->where("id", 11)->findOrFail();
复制代码
6,select() 方法默认返回 Collection 对象的数据集,可以通过 toArray() 方法转换成数组:
  1. // 用中断函数,来检测返回值
  2. $user = Db::table("user")->select();
  3. halt($user);

  4. // 转换成数组
  5. $user = Db::table("user")->select()->toArray();
  6. halt($user);
复制代码
7,通过 value() 方法,可以查询指定字段的值(单个),没有数据返回 null
  1. // value() 方法查询单个列值
  2. $user = Db::name("user")->where("id", 3)->value("name");
复制代码
通过 colunm() 方法,可以查询指定列的值(多个),没有数据返回空数组

  1. // colunm() 方法查询多个列值
  2. $user = Db::name("user")->column("name");
  3. // 通过id 作为索引
  4. $user = Db::name("user")->column("name,age", "id");
复制代码
当大量数据需要 批处理 时,比如给所有用户更新数据,就不能一次性全取出来,一批一批的来;

  1. // 批量处理
  2. Db::name("user")->chunk(2, function ($users) {
  3.     foreach ($users as $user) {
  4.         dump($user);
  5.     }
  6.     echo 1;
  7. });

  8. // 通过获取最后的SQL语句,发现用的是LIMIT 2
  9. return Db::getLastSql();
复制代码
另一种处理大量数据:游标查询,为了解决内存开销,每次读取一行,并返回到下一行再读取;
  1. // 批量处理2
  2. $users = Db::name("user")->cursor();
  3. // PHP生成器
  4. // halt($user);
  5. foreach ($users as $user) {
  6.     dump($user);
  7. }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

UID
1
贡献
387
丢币
38902
主题
4607
回帖
116
注册时间
2018-9-25
最后登录
2024-2-26