博客列表 >ThinkPHP6模型知识点、杂项、命令行总结——2019年8月27日

ThinkPHP6模型知识点、杂项、命令行总结——2019年8月27日

嘿哈的博客
嘿哈的博客原创
2019年08月28日 18:06:264168浏览

 

一、创建模型

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








上一条:SQLi-Labs_les1下一条:JS 获取时间代码
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议