【已解决】thinkphp5 如何在model层动态隐藏字段

浏览:5346 发布日期:2017/12/01 分类:ThinkPHP5专区 关键字: 模型 隐藏 字段
<?php

namespace app\api\model;
use think\Model;

class Tc extends Model
{
    //这里是必须隐藏的字段
    protected $hidden=['psw','tel1','tel2'];

    public static function getTc($id){
        //想在这个函数里再隐藏 email 字段???????????
        $tc=self::where('id','=',$id)
            ->find();
        return $tc;
    }

    public static function getTc2($id){
        //想在这个函数里再隐藏 gendor 字段?????????????
        $tc=self::where('id','=',$id)
            ->find();
        return $tc;
    }
}
在下面热心网友的帮助下,解决了这个问题,可以动态设置要隐藏的字段
方案一感谢老铁,在你的基础上,把hidden放到find后面实测可以行,下面是解决办法

class Tc extends Model
{
    //这里是必须隐藏的字段
    protected $hidden=['psw','tel1','tel2'];

    private static  $hid_arr1=['email','num','years'];
    private static  $hid_arr=['email','num','xl'];

    public static function getTc($id){
        //下方find后面的hidden 隐藏 $hid_arr1数组中指定的字段
        $tc=self::where('id','=',$id)
            ->find()->hidden(self::$hid_arr1);
        return $tc;
    }

    }
方案二感谢老铁,在你的基础上,把hidden放到find后面实测可以行,下面是解决办法

class Tc extends Model
{
    //这里是必须隐藏的字段
    protected $hidden=['psw','tel1','tel2'];

    public static function getTc($id){
        //下方find后面的hidden 隐藏 指定的字段,可以灵活设定
        $tc=self::where('id','=',$id)
            ->find()->hidden(['email']);
        return $tc;
    }

    }
当然,visible也是同样的道理
最佳答案
评论( 相关
后面还有条评论,点击查看>>