三种调试输出
- dump(): 输出所有数据类型,不会停止程序
- halt():会停止程序
- trace():调试器中输出
控制器
大多数情况下,建议给你的控制器继承一个基础控制器
空控制器
在找到不控制器的时候就会走这个控制器
在文档中让定义一个Error类,为什么是Error类呢?因为配置文件中要求的:config->route.php下
请求
请求对象
静态获取请求
think\facade\Request
动态获取请求
think\Request
继承父类的request属性
继承父类(BaseController)
特点不需要引入类,因为是继承的
请求方法
变量获取
模型
一张表一个模型
模型的定义
一般情况下模型名和表名一致(去前缀) 如:
<?php
namespace app\model;
use think\Model;
class User extends Model {
}
一定要继承基础模型类 think\Model 因为基础模型类中有数据库的所有方法
<?php
namespace app\model;
use think\Model;
class User extends Model
{
// $table配置数据表名称(可省略,在类名与表明一致的情况下可省略)
protected $table = 'think_user';
// $pk (primary key) 配置主键 (可省略,在主键为id时,因为默认为id)
protected $pk = 'uid';
}
模型里面的方法几乎都是静态方法,因为提升效率
搜索器
动态方法,不需要手动调用
搜索器仅在调用
withSearch方法的时候触发。
例子:
<?php
namespace app\model;
use think\Model;
class User extends Model
{
public function searchNameAttr($query, $value, $data)
{
$query->where('name','like', $value . '%');
}
public function searchCreateTimeAttr($query, $value, $data)
{
$query->whereBetweenTime('create_time', $value[0], $value[1]);
}
}
参数说明:
- $query:模型对象
- $value:搜索数组中该字段对应的值
- $data:搜索数组
获取器
事务
前提:所有用到的表必须是innodb引擎