tp5框架的获取器

  tp5的获取器功能很强大,一下子就喜欢上了,你可以在模块里任意定义表里不存在的字段,在前台调用很方便。话不多说直接上demo:

  1.命名规则   get + 属性名的驼峰命名+ Attr

  直接就能在model里定义:(本示例在UserModel里定义的(User.php文件))

  eg1:

  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字段了。

  怎样,是不是你也不自觉得喜欢上了tp5的获取器,尽情的使用吧,在使用过程中,相信你会有更多感悟的。

时间: 2024-12-28 20:55:39

tp5框架的获取器的相关文章

tp5.1动态获取器 增加一个不存在的字段

$list = $this->agent->where($where) ->withAttr('region',function ($value,$data){ $provice_name = regionIdToName($data['province_id']); $city_name = regionIdToName($data['city_id']); $county_name = regionIdToName($data['county_id']); $stree_name =

PHP TP5框架-手机APP端支付宝支付

最近应业务需求,做了支付宝支付和微信支付,今天分享一下手机端app支付宝支付对接流程,实际开发过程是前后端分离,前端调用后端API接口,实现功能返回数据,我所用的跨挤啊为TP5,大致可以分为四步: 1.在蚂蚁金服开放平台创建应用,签约商户,生成应用公钥和私钥: 2.配置统一下单支付参数: 3.整合支付宝demo类文件: 4.创建Alipay支付类,类内创建两个方法(alipay_app:统一下单方法和alipay_notify:支付成功异步回调方法); 第一步主要是在蚂蚁金服开放平台登录你的支付

心若迅雷会员账号获取器

心若迅雷会员账号获取器是一个绿色免费的迅雷会员获取小工具,每天都会发布多个有效的迅雷会员账号供大家使用,用户可以使用这些账号登陆迅雷进行离线下载. 获取迅雷白金会员一人一号说明以及流程:点击下面的(立即获取白金会员一人一号)进行获取,会自动打开一个软件安装提示,点击(立即点击安装)然后点软件上的注册账号然后通过注册的账号登陆视频聊天软件,然后随便进个房间免费观看2分钟视频,2分钟以后软件自动发送一人一号白金账号到你邮箱!如果按操作后没发送到自己邮箱请联系客服QQ:1625223157领取一人一号

百度地图坐标获取器

直接把百度地图坐标获取器放到dom里面有时会 引起js失效:用iframe标签就会涉及到父窗口的操作 代码如下 父窗口 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv=&

java有没有开源框架可以获取svn信息的

原文:java有没有开源框架可以获取svn信息的 代码下载地址:http://www.zuidaima.com/share/1550463238638592.htm 想通过java程序来自动监控svn的版本更新情况,不知道能否实现,有的话给提供个代码,多谢了. java有没有开源框架可以获取svn信息的

thinkphp 获取器、修改器

<?php namespace app\pagetest\model; use think\Model; class User extends Model { // 获取器 public function getSexAttr($value) { $sex = [0 => '未知', 1 => '男', 2 => '女']; return $sex[$value]; } // 修改器 public function setSexAttr($value) { $sex = ['未知'

ThinkPHP5中使用获取器

获取器的作用是在获取数据的字段值后自动进行处理数据表的字段会自动转换为驼峰法,一般status字段的值采用数值类型,我们可以通过获取器定义,自动转换为字符串描述.触发条件:获取器只有当获取某个数据属性的时候自动触发测试数据:<ignore_js_op> 模型代码:<ignore_js_op>控制器代码: 效果图:<ignore_js_op> <ignore_js_op> 控制器代码.png (18.77 KB, 下载次数: 2) 更多技术资讯可关注:gzit

tp5.0如何获取header的Authorization值

tp5.0如何获取header的Authorization值$request->header();好像没有这个值的但是发送请求头部有的 解决方案: 在.htaccess 文件中加入 设置 SetEnvIf Authorization ^(.*) HTTP_AUTHORIZATION=$1 原文地址:https://www.cnblogs.com/yehuisir/p/11521297.html

tp5 中 model 的获取器

在获取数据的字段值后自动进行处理 // 模型中写入如下代码,则查询结果会自动将status的结果进行转换 class User extends Model { public function getStatusAttr($value){ $status = [-1=>'删除',0=>'禁用',1=>'正常',2=>'待审核']; return $status[$value]; } } class User extends Controller { public function s