面包屑思维模型实战模型错题集结构手册流程手册自我检测专题模块

  • 微信小程序前端
    微信小程序前端易错点收集
    查看
  • css/less/sass样式控制
    在开发过程中的一些样式控制bug规避
    查看
  • tp5开发小程序
    tp5开发小程序时错误积累
    查看
  • PHP错题集
    PHP在实际开发过程中遇到的问题
    查看
  • MySql数据库
    使用MySql在实际开发中遇到的错误总结
    查看
  • TP5错题集
    积累tp5框架在实际开发过程中遇到的问题
    查看
  • uni-app爬坑
    主要用于uni-app项目中遇到的一些问题
    查看
  • Vue.js易错收集
    vue.js项目常见错误收集整理
    查看
  • uni-app开发微信小程序
    uni-app开发微信小程序的一些爬坑积累
    查看
  • Linux
    Linux在部署、开发、运维时遇见的错误积累
    查看
  • 安全设计
    常见安全设计
    查看
  • Redis
    项目中使用redis的相关错误积累
    查看
  • 前端特效
    前端特效相关错题集
    查看
more

最新博文

  • foreach下使用save向数据库存数据,只能存一次,如何解?

    thinkphp

    风口下的猪2019-06-09thinkphp

    阅读更多
  • 自动完成(数据完成)

    thinkphp

    数据完成主要是和修改器一起使用。

    数据自动完成指在不需要手动赋值的情况下对字段的值进行处理后写入数据库。

    系统支持autoinsertupdate三个属性,可以分别在写入、新增和更新的时候进行字段的自动完成机制,auto属性自动完成包含新增和更新操作

    例如我们定义User模型类如下:

    <?php

    namespace app\index\model;

    use think\Model;

    class User extends Model
    {
    protected $auto = ['name', 'ip'];
    protected $insert = ['status' => 1];
    protected $update = [];

    protected function setNameAttr($value)
    {

    return strtolower($value);
    }

    protected function setIpAttr()
    {

    return request()->ip();
    }
    }

    数据自动完成如果需要写入固定的值,可以直接指定(例如上面的status字段固定写入了1),类似于数据表字段的默认值功能。

    在新增数据的时候,会对nameipstatus 字段自动完成或者处理。

    $user = new User;

    $user->name = 'ThinkPHP';

    $user->save();

    echo $user->name; // thinkphp

    echo $user->status; // 1

    在更新数据的时候,会自动处理name字段的值及完成ip字段的赋值。

    $user = User::find(1);

    $user->name = 'THINKPHP';

    $user->save();

    echo $user->name; // thinkphp

    echo $user->ip; // 127.0.0.1

    风口下的猪2019-06-09thinkphp

    阅读更多
  • 修改器

    thinkphp

    修改器的主要作用是对模型设置的数据对象值进行处理。

    在实际项目开发中,修改器往往和数据完成(自动完成)一起使用,主要解决数据库写入数据时对数据的处理。

    详细的处理包括:字符串恒定小写、发表文章获取当前时间、修改文章修改字段储存的时间戳、评论获取评论者的id等具体的需求场景会经常用到。

    一.修改器方法的命名规范

    setFieldNameAttr

    主要是set+数据表字段或者模型数据属性驼峰命名+Attr

    二.定义了修改器之后会在下列情况下触发

    • 模型对象赋值;
    • 调用模型的data方法,并且第二个参数传入true
    • 调用模型的save方法,并且传入数据;
    • 显式调用模型的setAttr方法;
    • 定义了该字段的自动完成;

    三.例子说明

    <?php

    class User extends Model

    {

    public function setNameAttr($value)

    {

    return strtolower($value);

    }

    }

    如下代码实际保存到数据库中的时候会转为小写

    $user = new User();

    $user->name = 'THINKPHP';

    $user->save();

    echo $user->name; // thinkphp

    风口下的猪2019-06-09thinkphp

    阅读更多
  • 解决 json_encode 格式化的数据出现反斜杠的问题

    PHP

    风口下的猪2019-06-09PHP

    阅读更多
  • $info->getSaveName()做文件、图片上传时,生产路径名称斜杠是反的

    thinkphp

    tp5中的getSaveName()主要用于获得文件上传位置,

    上传文件代码如下:(其将文件通过request对象获取,并通过move方法存到public/uploads下)

    $file = request()->file('文件名');//首先获取到文件的名称

    $info = $file->move(ROOT_PATH . 'public' . DS . 'uploads');

    //获取到上传之后到文件详细位置,打印出来为:根目录/public/uploads/上传至uploads的随机名称

    (1)windows和linux使用getSaveName()的不同

    windows是反斜杠\

    linux是正斜杠/

    风口下的猪2019-06-09thinkphp

    阅读更多
  • 表单递交action转至另一控制器方法时url报错not found

    thinkphp

    风口下的猪2019-06-09thinkphp

    阅读更多
  • 模型下使用db()交给db类执行destroy(),结果报错

    thinkphp

    风口下的猪2019-06-09thinkphp

    阅读更多
  • 分页概述

    thinkphp

    实现分页主要包括两个步骤:

    1.将数据分页(在模型中操作,返回的是一个带有分页参数和相应方法这些分页信息的对象,主要使用paginate()方法);

    2.显示分页条(这个主要在控制器和模板中实现,主要使用object->render()方法)。

    一.数据分页,返回数据分页对象

    ThinkPHP5.0内置了分页实现,要给数据添加分页输出功能在5.0变得非常简单,可以直接在Db类查询的时候调用paginate方法。用paginate()代替select()取数据表的所有数据。

    例如:

    $list = Db::name('user')->where('status',1)->paginate(10);

    $list = User::where('status',1)->paginate(10);

    二.显示分页条

    分页条主要依靠render()

    我们来看看render()返回的数据是什么

    string '
    <ul class="pagination">
    <li class="disabled"><span>&laquo;</span></li> 
    <li class="active"><span>1</span></li>
    <li><a href="/thinkphp01/index.php/admin/tag/index.html?page=2">2</a></li>
    <li><a href="/thinkphp01/index.php/admin/tag/index.html?page=3">3</a></li>
    <li><a href="/thinkphp01/index.php/admin/tag/index.html?page=2">&raquo;</a></li>
    </ul>' (length=342)
    

    原来object->render()输出的是一段关于分页的ul和li代码。代码中我们可以清楚地看见有分页条涉及的“页数、上一条、下一条图标”等信息。

    所以我们直接在模板中使用render()执行的结果即可。

    1.在模板中直接使用

    {$list->render()}或者将其放在div中通过控制div得样式来控制分页条的位置、样式(这是实际项目中常用的,因为分页条的样式要根据项目要求改嘛)

    2.将分页结果赋值给模板变量,然后在模板中调用

    $list = User::where('status',1)->paginate(10);

    // 获取分页显示

    $page = $list->render();

    // 模板变量赋值

    $this->assign('list', $list);

    $this->assign('page', $page);

    // 渲染模板输出

    return $this->fetch();

     

    注意:在项目开发中如果前端框架使用的是bootstrap,直接给外div定义分页类样式,在内部放模板变量即可。

    例如:

    <div class="pagination pagination-sm pull-right">

    {$page}//或者{$list->render()}

    </div>

    风口下的猪2019-06-09thinkphp

    阅读更多
  • db()助手函数连接数据库时,写全名会报错

    thinkphp

    风口下的猪2019-06-09thinkphp

    阅读更多
  • Cannot access empty property(使用_initialize()在控制器中实例化模型时调用其方法)

    thinkphp

    风口下的猪2019-06-09thinkphp

    阅读更多
  • 比较标签

    thinkphp

    比较标签用于简单的变量比较,复杂的判断条件可以用if标签替换,比较标签是一组标签的集合,基本上用法都一致,如下:

    {比较标签 name="变量" value="值"}

    内容

    {/比较标签}

    系统支持的比较标签以及所表示的含义分别是:

    标签 含义
    eq或者 equal 等于
    neq 或者notequal 不等于
    gt 大于
    egt 大于等于
    lt 小于
    elt 小于等于
    heq 恒等于
    nheq 不恒等于

    他们的用法基本是一致的,区别在于判断的条件不同,并且所有的比较标签都可以和else标签一起使用。

    一.普通使用

    要求name变量的值等于value就输出

    {eq name="name" value="value"}value{/eq}

    或者

    {equal name="name" value="value"}value{/equal}

    也可以支持和else标签混合使用:

    {eq name="name" value="value"}

    相等

    {else/}

    不相等

    {/eq}

    当 name变量的值大于5就输出:

    {gt name="name" value="5"}value{/gt}

    当name变量的值不小于5就输出:

    {egt name="name" value="5"}value{/egt}

    二.变量情况(实际开发常用)

    1.name可以是字符串、数组、对象属性、系统变量等

    比较标签中的变量可以支持对象的属性或者数组,甚至可以是系统变量,例如: 当vo对象的属性(或者数组,或者自动判断)等于5就输出

    {eq name="vo.name" value="5"}

    {$vo.name}

    {/eq}

    当$vo['name']等于5就输出

    {eq name="vo['name']" value="5"}

    {$vo.name}

    {/eq}

    而且还可以支持对变量使用函数 当vo对象的属性值的字符串长度等于5就输出

    {eq name="vo:name|strlen" value="5"}{$vo.name}{/eq}

    2.value可以为变量,不过要加$前缀

    {eq name="vo:name" value="$a"}{$vo.name}{/eq}

    三.通用写法---compare标签

    所有的比较标签可以统一使用compare标签(其实所有的比较标签都是compare标签的别名)

    {compare name="name" value="5" type="eq"}value{/compare}

    等效于

    {eq name="name" value="5" }value{/eq}

    风口下的猪2019-06-09thinkphp

    阅读更多
  • 软件开发
  • 素质要求
  • 计算机基础
  • 架构
  • 安全
  • 性能
  • 运维
  • 尾页
  • 数据库
  • 开发终端
  • 语言基础
  • 项目管理
  • 产品设计
  • 系统
  • 工作规范
  • 计算机网络
  • 前端技术栈
  • 数据结构
  • 计算机组成原理
  • 后端技术栈
  • 性能优化
  • 安全设计
  • 常见模块
  • 计算机操作系统
  • 服务器
  • python
  • MySQL
  • thinkphp
  • PHP
  • Java
  • JavaScript
  • Windows
  • Linux
  • 特效
  • indexedDB
  • vue
  • 淘宝联盟
  • Ionic
  • Angular
  • 微信小程序
  • 支付宝小程序
  • uni-app
  • css/sass/less
  • 支付
  • socket
  • 爬虫
  • web性能优化
  • 消息推送
  • CVM
  • sqlite
  • Redis
  • 前端基础
  • 基础
  • element
  • Nginx
  • yii2
  • /ponder/index/catelist/catelist/cateid/10.html

    我的名片

    网名:风口下的猪

    职业:软件开发、广告传媒

    现居:重庆渝北

    Email:kamoneyte@qq.com

    标签云

    站点信息

    • 文章统计:528篇
    • 移动端访问:扫码进入SQ3R