Blogger Information
Blog 34
fans 1
comment 1
visits 40827
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
ThinkPHP6模型知识点、杂项、命令行总结——2019年8月27日
嘿哈的博客
Original
4164 people have browsed it

 

一、创建模型

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 目录








Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post