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. sql server truncate语句

    truncate语句 --truncate table '表名' --这样就利用SQL语句清空了该数据表,而不保留日志

  2. 同步(Synchronous)和异步(Asynchronous)方法的区别

    同步(Synchronous)和异步(Asynchronous)方法的区别 在讲之前,我们先来看<Computer Organization>中对于同步和异步的一个例子: 同步读写和异步读 ...

  3. js 禁用F12 和右键查看源码

    <script> window.onkeydown = function(e) { if (e.keyCode === 123) { e.preventDefault() } } wind ...

  4. iview之tabs嵌套

    iview之tabs嵌套 说明: iview组件中当嵌套使用 Tabs时,需要在Tabs中指定 name 属性来区分层级,然后在TabPane 中设置 tab 属性指向对应 Tabs 的 name 字 ...

  5. JS代码格式化

    JS代码格式化也就是规范化,保留必要的换行和缩进使代码阅读起来更容易.团队协同工作时会有相应的标准,大家要保证统一的代码风格,这样在合并代码的时候才不容易出问题.通过快捷键Ctrl+Shift+F进行 ...

  6. TKmybatis和mybatisplus哪个好用

    文档连接 :http://baomidou.oschina.io/mybatis-plus-doc/#/?id=%E7%AE%80%E4%BB%8B https://gitee.com/hengboy ...

  7. Nginx如何配置https证书?

    #把80端口请求跳转到443端口 server { listen 80; server_name 域名; return 301 https://$http_host$request_uri; } se ...

  8. airflow介绍

    1. airflow 介绍 1.1 airflow 是什么 Airflow is a platform to programmatically author, schedule and monitor ...

  9. pkg-config --libs libusb-1.0

    pkg-config --libs libusb-1.0 pkg-config --libs libusb-1.0 pkg-config --libs libusb-1.0

  10. spring注解 @profile 以及 注解@Slf4j

    @Slf4j 如果不想每次都写private  final Logger logger = LoggerFactory.getLogger(XXX.class); 可以用注解@Slf4j 一.在pom ...