1.命名规则   get + 属性名的驼峰命名+ Attr      ------>在相应的model中创建方法

例如:

 protected function getSexAttr($value) {
    $text = [1 => '男', 2 => '女', 3 => '保密'];
    return $text[$value];
  }

此情景下user表里是存在sex字段的,sex的值为1,2,3三种情况。这个获取器的作用在于,后台获取user表的list后,sex值仍为1,2,3。前台循环调用的时候就可以用{volist name="list" id="v" key="k"}{$v.sex}{/volist} 此时的{$v.sex}就对应成男,女,未知。

2.针对前台需要用到sex值1,2,3同时也要用到文本值男,女,未知的时候,这个获取器就有局限性了,此时,小伙伴们很容易想到,定义两个获取器,一个存1,2,3另一个存男,女,未知。ok,这个方法是可行的,在这里简单介绍一下我想到的方法,定义一个获取器存二维数组。

  eg2:

  

protected function getSexAttr($value) {
    $text = [1 => '男', 2 => '女', 3 => '未知'];
    return ['val' => $value, 'text' => $text[$value]];
  }

  这种情况下,前台就可以直接使用了{$v.sex.val}是1,2,3值的格式。{$v.sex.text}就是男,女,未知的格式。

  看到这里,相信小伙伴们已经蠢蠢欲动了吧,这还不止呢,接下来介绍一下,定义不存在的字段,映射其他表的字段。就可以应用到项目中了。

  3.关联其他表的字段构建user表里不存在的字段,其他表就以info表为例吧

  eg3:

  

protected function getHosNameAttr($value, $data) {

    $name = model('Info')->where('info_id', $data['id'])->value('hos_name');
    return $name;
  }

  在user表里构造了hos_name字段,这个例子很简单,user表的主键id是info表的外键info_id,通过这个关系就可以将info里的字段映射到user表里,在后台只查询user表的数据就能用hos_name了,可以省去两表联合查询

  4.如果又需要用到值,又需要用到文本的情况,就可以用第二个例子的思路了。

  eg4:

  

protected function getArchivesAttr($value, $data) {
    $archiveid = model('Info')->where('info_id', $data['id'])->value('archives_id');
    $archivename = model('Archives')->where('id', $archiveid)->value('name');
    return ['val' => $archiveid, 'text' => $archivename];
  }

  此示例,在user表里构建了archives字段,val存的是info表的archives_id字段,text是archives_id对应的在表archives里的name字段。省去了三表联合查询,这样在后台只需要查询user表就可以在前台调用archives字段了。

本文并非原创

参考:https://www.cnblogs.com/dreamflycc/p/getAttr.html          作者:dreamfly_cc

tp5获取器的用法。的更多相关文章

  1. tp5框架的获取器

    tp5的获取器功能很强大,一下子就喜欢上了,你可以在模块里任意定义表里不存在的字段,在前台调用很方便.话不多说直接上demo: 1.命名规则   get + 属性名的驼峰命名+ Attr 直接就能在m ...

  2. thinkphp5 获取器的

    获取器的作用是在获取数据的字段值后自动进行处理,例如,我们需要对状态值进行转换,可以使用: 1.数据库字段转换. class User extends Model { public function ...

  3. 简单说明Python中的装饰器的用法

    简单说明Python中的装饰器的用法 这篇文章主要简单说明了Python中的装饰器的用法,装饰器在Python的进阶学习中非常重要,示例代码基于Python2.x,需要的朋友可以参考下   装饰器对与 ...

  4. 窗口信息获取器 Spy4Win v0.20b 中文绿色版

    软件名称:窗口信息获取器 Spy4Win v0.20b 中文绿色版软件类别:国产软件运行环境:Windows XP软件语言:简体中文授权方式:免费版软件大小:1.67 MB软件等级:整理时间:2012 ...

  5. 获取器操作都是针对数据而不是数据集的,要通过append()方法添加数据表不存在的字段

    获取器操作都是针对数据而不是数据集的,要通过append()方法添加数据表不存在的字段 public function getMembership(){ //加入会员s_id = 1 $busines ...

  6. thinkPHP5.0获取器获取原始数据

    如果你定义了获取器的情况下,希望获取数据表中的原始数据,可以使用:$cate = Cate::get(1);// 通过获取器获取字段echo $cate->type;// 获取原始字段数据ech ...

  7. thinkPHP5.0获取器

    获取器的作用是在获取数据的字段值后自动进行处理,例如,我们需要对状态值进行转换,可以使用: class Cate extends Model { public function getTypeAttr ...

  8. Thinkphp5.0 的使用模型Model的获取器与修改器

    Thinkphp5.0 的使用模型Model的获取器.修改器.软删除 一.获取器 在model中使用 get+字段名+Attr,可以修改字段的返回值. 数据库中性别保存为,0未知.1男.2女,查询时返 ...

  9. SiteMesh2-sitemesh.xml的其它映射器的用法

    在sitemesh.xml中做常用的三个映射器,总结如下: 映射器元素的顺序确定优先级.良好的应用程序应使用以下顺序, Parameter query = ParameterDecoratorMapp ...

随机推荐

  1. Redis 高可用之哨兵模式(二)

    上一篇实际操作过程中遇到两个问题 问题一:虽然运行了3个sentinel容器,实际上只有一个sentinel运行 问题出现的原因很简单,三个sentinel用的是同一个挂载配置文件,容器内部的更改直接 ...

  2. try catch和finally

    在C#中这三个关键字用于处理异常. 这三个关键字try是必定要用的,要不然就失去了意义.然后catch和finally可以不用但是要注意遵循原则. 存在一个或多个catch的时可以不用finally, ...

  3. 漏洞:阿里云盾phpMyAdmin <=4.8.1 后台checkPageValidity函数缺陷可导致GETSHELL

    阿里云盾提示phpMyAdmin <=4.8.1会出现漏洞有被SHELL风险,具体漏洞提醒: 标题 phpMyAdmin <=4.8.1 后台checkPageValidity函数缺陷可导 ...

  4. vue记录错误和警告日志

    https://blog.csdn.net/lucky___star/article/details/95491657 https://blog.csdn.net/weixin_34204057/ar ...

  5. Vue初始化一个项目

    @1 npm install -g @vue/cli-init vue init webpack projectName @2 cnpm install -g @vue/cli vue create ...

  6. eclipse导入myeclipse中的项目(如何把Webroot改为WebContent)

    1.进入项目目录,找到.project文件,打开. 2.找到…代码段. 3.在第2步的代码段中加入如下标签内容并保存: org.eclipse.wst.common.project.facet.cor ...

  7. Delphi 文件的编程

  8. linux上如何安装postgresql

    安装对应的postgresql的yum源 rpm -Uvh https://download.postgresql.org/pub/repos/yum/9.4/redhat/rhel-7-x86_64 ...

  9. gitlab和jenkins的安装及使用

    gitlab 准备: 最少4G内存 先安装docker软件包然后使用docker search gitlab 查找镜像然后使用docker pull 镜像名:标签名 下载镜像启动容器: docker ...

  10. 【AGC 036C】GP2

    https://atcoder.jp/contests/agc036/tasks/agc036_c 题意 有一个长度为 $n$ 的非负整数序列 $x$,初始时全为 $0$.一次操作定义为选择一对正整数 ...