thinkphp5常用命令
控制器定义
namespace app\index\controller;
class Index
{
public function index()
{
return 'index';
}
}
模型定义
namespace app\index\model;
use think\Model;
class User extends Model
{
}
设置主键
protected $pk = 'uid';
设置数据表
protected $table = 'think_user';
控制器初始化
public function _initialize()
{
echo 'init<br/>';
}
// 如果你的控制器类继承了\think\Controller类的话,可以定义控制器初始化方法_initialize
模型初始化
//自定义初始化
protected function initialize()
{
//需要调用`Model`的`initialize`方法
parent::initialize();
//TODO:自定义的初始化
}
// 模型同样支持初始化,与控制器的初始化不同的是,模型的初始化是重写Model的initialize
显式新增数据
$data = [
"name"=>"林菊英",
"age"=>50
];
$row_num = $user_md->isUpdate(false)->save($data);
var_dump($row_num );
//数据中不包含主键 返回受影响的行数
显式更新数据
$data = [
"id" => 13,
"name"=>"王丽霞",
"age"=>45
];
$row_num = $user_md->isUpdate(true)->save($data);
var_dump($row_num );
//数据中包含主键 返回受影响的行数
根据主键删除
$row_num = $user_md->destroy(13); //根据主键删除
var_dump($row_num); // 返回受影响行数
获取单条数据
// 使用主键
$data = $user_md->get(1);
dump($data->toArray());
// 取单条数据 并转化为数组
// 使用数组
$data = $user_md->get(["name"=>"李逵"]);
dump($data->toArray());
// 取单条数据 并转化为数组
获取多条数据
// 使用数组条件查询,并返回转换为数组
$list = $user_md->all(["name"=>"张三"]);
dump(collection($list)->toArray());
// 调用db类的查询方法
$user_md->where('name', 'thinkphp')
->limit(10)
->order('id', 'desc')
->select();
获取器
// 获取器的作用是在获取数据的字段值后自动进行处理,例如,我们需要对状态值进行转换,可以使用:
public function getStatusAttr($value)
{
$status = [-1=>'删除',0=>'禁用',1=>'正常',2=>'待审核'];
return $status[$value];
}
修改器
// 修改器的作用是可以在数据赋值的时候自动进行转换处理,例如:
public function setNameAttr($value)
{
return strtolower($value);
}
类型转换
protected $type = [
'status' => 'integer',
'score' => 'float',
'birthday' => 'datetime',
'info' => 'array',
];
// 支持给字段设置类型自动转换,会在写入和读取的时候自动进行类型转换处理
// 数据库查询默认取出来的数据都是字符串类型,如果需要转换为其他的类型,需要设置,支持的类型包括如下类型
// integer float boolean array object serialize timestamp
数据完成
class User extends Model
{
protected $auto = [];
protected $insert = ['ip','status' => 1];
protected $update = ['login_ip'];
protected function setIpAttr()
{
return request()->ip();
}
}
// 数据自动完成指在不需要手动赋值的情况下对字段的值进行处理后写入数据库。
// 系统支持auto、insert和update三个属性,可以分别在写入、新增和更新的时候进行字段的自动完成机制
// 开发者需要理清“修改器”与“自动完成”的关系。
模型事件
User::event('before_insert', function ($user) {
if ($user->status != 1) {
return false;
}
});
before_insert 新增前
after_insert 新增后
before_update 更新前
after_update 更新后
before_write 写入前
after_write 写入后
before_delete 删除前
after_delete 删除后
获取请求参数
// 获取GET
public function index(Request $request)
{
$name = $request->get("name");
return $name;
}
// 获取POST
public function index(Request $request)
{
$name = $request->post("name");
return $name;
}
判断请求类型
public function index(Request $request)
{
if ($request->isGet()) {
return "get";
}
if ($request->isPost()) {
return "post";
}
if ($request->isAjax()) {
return "ajax";
}
}
HTTP头信息
public function index(Request $request)
{
return $request->header("Accept-Encoding");
}
// HTTP请求头信息的名称不区分大小写
模板赋值
// 模板变量赋值
$this->assign('name','ThinkPHP');
$this->assign('email','thinkphp@qq.com');
// 或者批量赋值
$this->assign([
'name' => 'ThinkPHP',
'email' => 'thinkphp@qq.com'
]);
模板渲染
// 不带任何参数 自动定位当前操作的模板文件
// 表示系统会按照默认规则自动定位模板文件,其规则是:
// 当前模块/默认视图目录/当前控制器(小写)/当前操作(小写).html
// 如果控制器和方法名 是驼峰法 则改为下划线
// 比如控制器方法位置:index/UserInfo/updatePwd
// 对应模板位置: index/user_info/update_pwd.html
return $this->fetch();
URL访问
// 默认情况下,URL是不区分大小写的,也就是说 URL里面的模块/控制器/操作名会自动转换为小写,控制器在最后调用的时候会转换为驼峰法处理。
// 比如控制器和方法位置为: index/UserInfo/updatePwd
// 在默认不区分大小写情况下,访问url为:http://localhost:8080/index/user_info/updatepwd 控制器加下划线 方法名全部小写
URL生成
// 在默认不区分大小写情况下
url("index/UserInfo/updatePwd") 函数
生成为:/index/user_info/updatepwd
命令行
// 生成控制器
// 执行下面的指令可以生成index模块的Blog控制器类库文件
>php think make:controller index/Blog
// 生成模型
// 执行下面的指令可以生成index模块的Blog模型类库文件
>php think make:model index/Blog