thinkphp5实用入门进阶知识点和各种常用功能代码汇总

【ThinkPHP版本查询】

dump(THINK_VERSION);

模板获取get参数

{$Think.get.pageNumber}或者
$Request.param.name(参数名)

【循环嵌套标签】

模板循环标签

{volist}{/volist}标签遍历

【offset 开始遍历的地方】
【length 遍历的长度,循环的次数】
【mod 与当前数取余】
【empty 为空时显示】
【key 循环的次数】

  

这是view/index/index.html

  {volist name="list" id="vo" offset="0" length="3" mod="2" empty="这里没有数据" key ='s'}

{$mod}:{$s}:{$vo.name}

  {/volist}

{foreach}{/foreach}标签遍历

方法一

{foreach $list as $vo}
  

{$vo.name}:{$vo.email}

{/foreach}

方法二

  {foreach name="list" as item="vo"}
    

{$key} : {$vo.name} : {$vo.email}

【$key 数组的下标】   {/foreach}

{for}{/for}标签循环


  {for start="1" end="10" step="2" name="i"} 【start 相当于for循环中的$i=1】【end 相当于for循环中的$i<10】【strp 步进值】【name 默认为i,对应$i】
    

{$i}

  {/for}

【多个查询条件判断】非常实用

// 检查分类名称和分类目录是否重名
$count_one = Db::name('category')->where('id','<>',$id)->where('catname',input('post.catname'))->count();
$count_two = Db::name('category')->where('id','<>',$id)->where('catdir',input('post.catdir'))->count();

if($count_one){
	return error('分类名称重名!');
}else if($count_two){
	return error('分类目录重名!');
}

【单选框条件判断】








【模板中三层循环】

{volist name="menu" id="vo"}
	
  • {$vo.name} {eq name="vo.child" value="1"} {/eq}
  • {/volist}

    【未定义变量】{$catinfo.catname ?''}

    // 设置异常错误报错级别,关闭notice错误
    error_reporting(E_ALL ^ E_NOTICE);

    获取单个字段值

    想直接获取单个字段值,弄了半天,tp5的getField()方法变了,具体如下:
    TP5中的getField():拆分为value和column了
    例子:

    ••• where("id = 1")->value("title"); 输出:(string) title
    ••• where("id = 1")->column("title"); 输出:(array)

    【对象转数组】

    $this->toArray();

    【接收表单单个变量值】

    input('post.tab');

    【接收表单数组】

    input('post.order/a');

    【接收链接数据】

    input('parentid',0)

    【模型中新增数据】

    save()

    【控制器中新增数据】

    insert()

    【引用模型别名】

    use app\admin\model\Category as CategoryModel;

    【助手函数】

    用助手函数Db,可以不用引用命名空间

    【静态方法调用】

    外部用类名::方法名,内部用self::方法名

    【判断第三层分类下不能勾选子分类条件】

    只要判断上级分类是第二层,就说明新添加分类为第三层,则不能勾选子分类选项

    $parentid = Db::name('menu')->where('id',input('post.parentid'))->value('parentid');
    if($parentid && input('post.child')){
    	return error('不能勾选拥有子菜单项!');
    }

    【单选框和复选框默认值】

    前台变量如果值为0,提交则没有该变量,存入数据库则为默认值。解决方法有二:
    方法一:修改数据表的默认值为0
    方法二:控制器中判断,判断提交数据中是否有该变量,没有则设置该变量值为0

    【插入数据调整信息:修改器】

    protected $insert = ['addtime'];
    
    //addtime修改器
    protected function setAddtimeAttr($value){
    	return date('Y-m-d H:i:s');
    }

    【读取磁盘文件】

    const newModelSql = './data/sfox_newmodel.sql';
    $newModelSql = file_get_contents(self::newModelSql);

    【获取模板文件名】

    $handle = opendir('../template/default/temp/');
    while ($file = readdir($handle)) {
    	if ($file != '.' && $file != '..') {
    		$files[]['name'] = $file;
    	}
    }

    【原生态删除数据表】

    $dbPrefix = config('database.prefix');
    Db::execute("DROP TABLE `{$dbPrefix}{$tablename}`;");

    【原生态重命名数据表】

    $dbPrefix = config('database.prefix');
    Db::execute("RENAME TABLE `{$dbPrefix}{$oldTableName}` TO `{$dbPrefix}{$newTableName}` ;");

    【原生态更改数据表某字段值】

    UPDATE tp_models_field SET issystem=0 WHERE modelid=35;

    【原生态修改数据表字段名称】

    ALTER TABLE `ps_test` DROP COLUMN `{$info['field']}` ;
    

    【原生态添加数据表字段名称】

    ALTER TABLE `ps_test` ADD `{$fieldname}` VARCHAR(255) NOT NULL DEFAULT '{$defaultvalue}'
    

    【insert into table 插入多条数据】

    INSERT INTO tablename VALUES(item1, price1, qty1),(item2, price2, qty2),(item3, price3, qty3);
    

    【转数组格式】

    方法一:$settings = array('setting'=>$data_setting);
    方法二:$settings['setting'] = $data_setting;(推荐)

    模型专题

    字符串查询(预处理机制)

    $models = new ModelsModel;
    //判断模型是否存在,采用字段串条件查询,配合预处理机制
    if($models::where("id!=:id AND (tablename=:tablename OR name=:name)")
        ->bind([
            'id'=>$id,
            'tablename'=>$data['tablename'],
            'name'=>$data['name']
        ])->count()){
        return error('模型已经存在!');
        exit;
    }

    【多个条件或判断】whereOr()

    //判断新模型是否存在
    $models = new ModelsModel;
    if($models::where('tablename',$data['tablename'])->whereOr('name',$data['name'])->count()){
    	return error('模型已经存在!');
    	exit();
    }

    【多个条件或判断】where()

    //判断新模型是否存在
    $models = new ModelsModel;
    if($models::where('tablename',$data['tablename'])->where('name',$data['name'])->count()){
    	return error('模型已经存在!');
    	exit();
    }

    前台指定调用条数

    offset=0 length=4(从第一条开始,总共调用4条数据

    奇偶循环调用

    $key:是从0开始的
    $i:是从1开始的
    思路:取模运算,当是奇数的时候,循环输出奇数和偶数内容

    {volist name="channel_list" id="cvo"}
    	{if condition="$i%2 eq 1"}
    		
    	{/if}
    {/volist}

    自动切换

    1、前端模板

      {volist name="data" id="ivo"}
    • {/volist}

    2、JS功能实现

    
    

    加红关键字

     

    到此这篇关于thinkphp5实用入门进阶知识点和各种常用功能代码汇总的文章就介绍到这了,更多相关thinkphp5常用功能代码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    你可能感兴趣的:(thinkphp5实用入门进阶知识点和各种常用功能代码汇总)