zoukankan      html  css  js  c++  java
  • tp5获取器的用法。

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

    例如:

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

    此情景下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

  • 相关阅读:
    查詢一個表中的所有字段,一个表的结构
    二月份工作總結
    导出excel [原创]
    一个it老总对于新人的一点建议
    命名空间的别名
    mssql 格式化时间 [转]
    开发人员一定要加入收藏夹的网站
    sql 导出/入Excel
    hibernate中hbm文件中inverse功能
    详细展示Asp.net页面的生命周期[转]
  • 原文地址:https://www.cnblogs.com/kiimi/p/8361048.html
Copyright © 2011-2022 走看看