搜索
博主信息
博文 34
粉丝 1
评论 1
访问量 47629
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
ThinkPHP6模型知识点、杂项、命令行总结——2019年8月27日
嘿哈的博客
原创
4586人浏览过

 

一、创建模型

82704.png

表前缀设置:config/database.php 文件里 prefix

1、单项目模型创建

第一步:创建一个跟控制器平级的目录,目录名:model

第二步:在 model 创建 Admins.php 文件

2、多项目模型创建

第一步:在 index 项目中创建目录,目录名:model

第二步:在 model 创建 Admins.php 文件

controller控制器公用示例:    
    namespace app\index\controller;
    use app\BaseController;
    //引入模型
    use app\index\model\Admins;
    
    class Index extends BaseController{
        public function index(){
            $db = new Admins();
            $index = $db->index();
            print_r($index);
        }
    }


模型文件里的自定义方法,不要和 thinkphp 方法一样名称

模型里访问用 Admins:: 也可以用 static:: 关键词

model示例:
    namespace app\index\model;
//引入模型
    use think\Model;
    class Admins extends Model{
        public function index(){
            $select = Admins::select();
            $select = Admins::select([1]);
            $select = Admins::where('id','>',1)->select();
            return $select;
        }
    }

82705.jpg

使用search属性时,mysql类型根据php数据类型定义,如果是json类型直接定义为json即可

saveAll 批量添加或修改数据

演示:

model示例:    
    namespace app\index\model;
    use think\Model;
    class Admins extends Model{
        //protected $name = 'User';
        //protected $table = 'user';
        protected $pk = 'uid';
        protected $schema = [
            'uid'         => 'int',
            'u_name'      => 'string'
        ];
        public function index(){
            $select = Static::select();
            return $select;
        }
    }
controller示例:    
    namespace app\index\controller;
    use app\BaseController;
    use app\index\model\Admins;
    
    //渲染到视图需引入视图文件
    // use think\facade\View;
    
    class Index extends BaseController{
        public function index(){
            $db = new Admins();
            $index = $db->index();
            print_r($index);
    //渲染到视图
    // $db = new Admins();
    // $index = $db->index();
    // View::assign('index',$index);
    // return View::fetch();
        }
    }


82706.jpg

82707.png

82708.png

6、模型 检查数据

 

必须使用数据集对象的 isEmpty 方法判断

 

Model示例:
<?php
namespace app\pc\model;
use think\Model;
use think\model\concern\SoftDelete;
class admins extends Model
{
    public function index()
    {
        //模型检查数据
         $admins = Admins::where('id',1)->select();
         if($admins->isEmpty())
         {
             echo '数据集为空';
         }
    }
}
Controller示例:
<?php
namespace app\pc\controller;
use app\BaseController;
use think\facade\View;
use app\pc\model\admins;
class admin extends BaseController
{
     public function index()
     {
          $db = new Admins();
          $test = $db->index();
           return $test;
          //echo '<pre>' . print_r($test,true).'<br>';
 }
}


7、模型 只读字段

Model示例:
<?php
namespace app\pc\model;
use think\Model;
use think\model\concern\SoftDelete;
class admins extends Model
{
    //模型只读字段
    protected $readonly = ['username'];
    
    public function index()
    {
        //模型只读字段
        $admins = Admins::update(['username'=>'ouyangke'],['id'=>2]);
        return $admins;     
    }
}
Controller示例:
<?php
namespace app\pc\controller;
use app\BaseController;
use think\facade\View;
use app\pc\model\admins;
class admin extends BaseController
{
     public function index()
     {
          $db = new Admins();
          $test = $db->index();
           return $test;
          //echo '<pre>' . print_r($test,true).'<br>';
 }
}

8、模型 软删除

软删除功能,需要引入 SoftDelete use think\model\concern\SoftDelete;

类中引入 use SoftDelete;

需要创建一个 delete_time 字段

软删除的删除操作仅对模型的删除方法有效

Model示例:
<?php
namespace app\pc\model;
use think\Model;
use think\model\concern\SoftDelete;
class admins extends Model
{
     //模型软删除
     use SoftDelete;
     protected $deleteTime = 'delete_time';
     protected $defaultSoftDelete = 0;


    public function index()
    {
        //模型软删除
      $admins = Admins::destroy(3);
      return $admins;
    }
}

9、杂项

1.创建公用方法

   app/common.php在这里创建公用方法;

app/common.php 示例:    /**
     * 取某天零点时间戳(本地时间)
     * @param number $time 欲获取当日的时间戳
     * return number 这天零点时间戳
     */
    function getZeroTime($time){
        // Z 时差偏移量的秒数。UTC 西边的时区偏移量总是负的,UTC 东边的时区偏移量总是正的。
        $timezone = date('Z', $time);
        $time += $timezone;
        $time = $time - $time % 86400 - $timezone;
        return $time;

    }
controller示例:    
   namespace app\index\controller;
    use app\BaseController;
    class Index extends BaseController{
        public function index(){
            $time = getZeroTime('1561785828');
            print_r($time.'<br/>');
            print_r(date('Y-m-d H:i:s',$time));
        }
    }

2、创建共用类方法

BaseController 示例:    /**
     * 取某天零点时间戳(本地时间)
     * @param number $time 欲获取当日的时间戳
     * return number 这天零点时间戳
     */
    public function getZeroTime($time){
        // Z 时差偏移量的秒数。UTC 西边的时区偏移量总是负的,UTC 东边的时区偏移量总是正的。
        $timezone = date('Z', $time);
        $time += $timezone;
        $time = $time - $time % 86400 - $timezone;
        return $time;
    }
controller示例:   
    namespace app\index\controller;
    use app\BaseController;
    class Index extends BaseController{
        public function index(){
            $time = $this->getZeroTime('1561785828');
            print_r($time.'<br/>');
            print_r(date('Y-m-d H:i:s',$time));
       }
    }

ThinkPHP6 内置命令

1、启动服务器

ThinkPHP6 内置了 web 服务器,不需要安装环境就可以使用

第一步:打开 windows 自带的命令行工具 cmd

第二步:进入 ThinkPHP 根目录

第三步:命令行输入 php think run 启动服务器

如果开启成功可以直接访问网址:http://127.0.0.1:8000

2、查看版本

命令行输入 php think version


2、自动生成应用目录

第一步:在 app 目录下创建 build.php 文件

示例:   
   // __file__     表示生成文件(默认会生成common.php、middleware.php、event.php和provider.php文件,无需定义)
   // __dir__      表示生成目录(支持多级目录)
   // controller   表示生成控制器类
   // model        表示生成模型类
   // view         表示生成模板文件(支持子目录)
   return [
        // 需要自动创建的文件
       '__file__'   => [],
        // 需要自动创建的目录
       '__dir__'    => ['controller', 'model', 'view'],
        // 需要自动创建的控制器
       'controller' => ['Index'],
        // 需要自动创建的模型
       'model'      => ['User'],
        // 需要自动创建的模板
       'view'       => ['index/index'],
    ];

第二步:在命令行输入:php think build admin

成功后,就可以看到 app 目录下出现 admin 目录








本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学