ThinkPHP6基本操作

1.tp6安装

# 查看PHP版本
php -v

# 安装composer
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

# 进入站点目录,安装tp6稳定版,文件夹命名为tp6
cd [站点目录]
composer create-project topthink/think [文件夹名:tp6]

# 安装多应用模式
cd tp6 #进入tp6文件夹
composer require topthink/think-multi-app #安装命令

# 安装视图
composer require topthink/think-view

# 安装websocket
composer require textalk/websocket

# 安装验证码
composer require topthink/think-captcha

# 安装阿里云相关插件 (短信服务)
composer require alibabacloud/sdk

# 创建api目录
php think build api

2.模型

1.开启软删除
use SoftDelete;
protected $deleteTime = 'deletetime';
protected $defaultSoftDelete = 0;
2.模型操作
// 添加模型后缀
protected $name = 'user';
​
// 添加主键
protected $pk = 'id';
​
// 添加表名
protected $table = 'tp_user';
​
// 添加只读字段,无法修改
protected $readonly = ['id', 'createtime'];
​
// 添加废弃字段
protected $disuse = ['updatetime'];
​
// 添加JSON字段
protected $json = ['list'];
3.自动写入时间戳
// 自动写入时间戳字段
protected $autoWriteTimestamp = 'int';
// 定义时间戳字段名
protected $createTime = 'createtime';
protected $updateTime = 'updatetime';
4.追加属性
// 追加属性
protected $append = [
  'create_time_text',
  'update_time_text',
  'delete_time_text',
];
// 设置status修改器
public function getStatusAttr($value)
{
    $arr = [0=>'待审核', 1=>'正常', 2=>'禁用', 3=>'删除'];
    return $arr[$value];
}
// 显示的时候转换成日期格式显示
public function getCreateTimeTextAttr($value, $data)
{
  $value = $value ? $value : (isset($data['create_time']) ? $data['create_time'] : '');
  return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value;
}
// 设置的时候自动转换成时间戳
protected function setCreateTimeAttr($value)
{
  return $value === '' ? null : ($value && !is_numeric($value) ? strtotime($value) : $value);
}
// 修改时候的数据
protected function setArrivalVideoAttr($value)
{
    return $value == '' ? null : $value;
}
5.查询前后置操作
// 查询后执行的事件
protected static function onAfterRead($query)
{
    echo '查询后执行!';
}
// 修改前执行
protected static function onBeforeUpdate($query)
{
    echo '修改前执行';
}
// 修改后执行
protected static function onAfterUpdate($query)
{
    echo '修改完执行';
}
6.模型初始化操作
// 初始化操作
protected static function init()
{
  parent::init(); // TODO: Change the autogenerated stub
}
7.设置字段类型
// 设置字段信息
protected $schema = [
  'id' => 'int',
  'status' => 'int',
  'price' => 'float',
];
8.模式
// 是否严格要求大小写
protected $strict = false;
9.设置虚拟字段的修改器
// 设置一个虚拟nothing字段的修改器
public function getNothingAttr ($value, $data)
{   
    $arr = [-1=>'删除', 0=>'禁用', 1=>'正常', 2=>'待审核'];  
    return $arr[$data['status']];
}
10.模糊查询
// name模糊查询
public function scopeName ($query, $value)
{   $query->where('name', 'like', '%'.$value.'%');
}
// price区间查询
public function scopePrice ($query, $value)
{   
    $query->where('price', '>', $value);
}
// 搜索器 name模糊查询
public function searchNameAttr ($query, $value, $data)
{   
    $query->where('name', 'like', '%'.$value.'%');  
    if (isset($data['sort'])) {     
        $query->order($data['sort']);   
    }
}
// create_time通过时间区间搜索
public function searchCreateTimeAttr ($query, $value, $data)
{   
    $query->whereBetweenTime('create_time', $value[0], $value[1]);
}
11.关联表
// 关联其他表
public function table_other() 
{  
    return $this->belongsTo('另一个表', '外键', '主键', [], 'LEFT')->setEagerlyType(0);
}

3.事务处理

$this->model->startTrans();
// 开启一个事务
try{  
    //事务提交  
    $this->model->commit();
} catch (\think\Exception $e) {  
    $this->model->rollback();
}

4.调试

->fetchSql()
echo Db:getLastSql();exit;

99.常见问题

1.NGINX伪静态配置
location /{
    # 如果文件不存在则尝试TP解析
    if (!-e $request_filename) {
        rewrite  ^(.*)$  /index.php?s=/$1  last;
        break;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值