【综合教程】Thinkphp8学习知识点汇总(全集)
1,基础控制器
- 一般来说,创建控制器后,推荐继承基础控制器来获得更多的功能方法;
- 基础控制器仅仅提供了控制器验证功能,并注入了think\App和think\Request;
- 这两个对象后面会有章节详细讲解,下面我们继承并简单使用一下;
- namespace app\controller;
- use app\BaseController;
- class User extends BaseController
- {
- public function index()
- {
- // 返回实际路径
- return $this->app->getBasePath();
- // 返回当前方法名
- return $this->request->action();
- }
- }
复制代码
2,空控制器
空控制器一般用于载入不存在的控制器时,进行错误提示;
- class Error
- {
- public function __call(string $name, array $arguments)
- {
- return "当前控制器不存在!";
- }
- }
复制代码
3,thinkphp8教程打印最后一条执行sql语句代码
4,使用 findOrEmpty() 方法也可以查询一条数据,但在没有数据时返回一个空数组
- // 没有数据返回空数组
- $user = Db::table("user")->where("id", 11)->findOrEmpty();
复制代码 5,使用 findOrFail() 方法同样可以查询一条数据,在没有数据时抛出一个异常:- // 没有数据抛出异常
- $user = Db::table("user")->where("id", 11)->findOrFail();
复制代码 6,select() 方法默认返回 Collection 对象的数据集,可以通过 toArray() 方法转换成数组:- // 用中断函数,来检测返回值
- $user = Db::table("user")->select();
- halt($user);
- // 转换成数组
- $user = Db::table("user")->select()->toArray();
- halt($user);
复制代码 7,通过 value() 方法,可以查询指定字段的值(单个),没有数据返回 null ;
- // value() 方法查询单个列值
- $user = Db::name("user")->where("id", 3)->value("name");
复制代码 通过 colunm() 方法,可以查询指定列的值(多个),没有数据返回空数组
- // colunm() 方法查询多个列值
- $user = Db::name("user")->column("name");
- // 通过id 作为索引
- $user = Db::name("user")->column("name,age", "id");
复制代码 当大量数据需要 批处理 时,比如给所有用户更新数据,就不能一次性全取出来,一批一批的来;
- // 批量处理
- Db::name("user")->chunk(2, function ($users) {
- foreach ($users as $user) {
- dump($user);
- }
- echo 1;
- });
- // 通过获取最后的SQL语句,发现用的是LIMIT 2
- return Db::getLastSql();
复制代码 另一种处理大量数据:游标查询,为了解决内存开销,每次读取一行,并返回到下一行再读取;
- // 批量处理2
- $users = Db::name("user")->cursor();
- // PHP生成器
- // halt($user);
- foreach ($users as $user) {
- dump($user);
- }
复制代码 |
|