Codeigniter查询结果返回带有setter的自定义结果对象

Zalaboza

CI custome对象到底是如何工作的?

根据CI文档,您还可以将字符串传递给result(),该字符串表示要为每个结果对象实例化的类(注意:必须加载该类)

$query = $this->db->query("SELECT * FROM users;");

foreach ($query->result('User') as $row)
{
   echo $row->name; // call attributes
   echo $row->reverse_name(); // or methods defined on the 'User' class
}
}

这是一个非常不错的功能,但Ci所做的是它将返回一个User对象数组并从行设置属性。

我有一个问题,我想在设置/获取之前对要公开访问的属性和要修改的属性进行更多控制。

我怎样才能做到这一点?我可以告诉CI将所有属性传递给构造函数,以便类可以填充其自己的数据吗?

示例类用户

class User{
    private $data=array();
    protected $CI;
    //public $id,$name,$dob,$gender,$role,$username,$password,$salt,$picture,$lastactive;
    function __construct($data=null)
    {
        $this->data = $data; // i want to save data to a private var and allow attr. throu getters only
    }
    function set_password($p){
      $this->generateSalt();
      $this->data->password = $p.$this->data->salt;
    }
}

简而言之::

我想使用custom_result_object,但我不希望codeigniter为我填充类属性,相反,我希望类接收这些attrs并以适合自己的方式自行填充它。

尼洛·维莱兹(NiloVelez)

我在为自己寻找解决方案时找到了您的问题。

在阅读了一些文档后,我设法弄清楚了:

class user_item {
  // you can declare all the attributes you want as private
  private $id,$name,$dob,$gender,$role,$username,$password,$salt,$picture,$lastactive;

  function __construct(){
    // you can use the constructor to format data as needed
    $this->username = strtouppper($this->username);  
  }

  public function set_password($p){
    $this->generateSalt();
    $this->password = $p.$this->salt;
  }

  public function get_password(){
    return $this->password;
  }
}

设置完成后,您可以从 $this->db->result()

class User_model extends CI_Model {
   public function get_user($id){
     return $this->db->get_where('users', array('id' => $id), 1)->result('user_item');
   }
}

并根据需要调用该类的任何公共方法或属性

class Users extends CI_Controller {
  function __construct(){
     $this->load->model('user');
  }
  public function profile($user_id){
    var $myUser = $this->user->get_user($user_id);
    $myUser->set_password('myPassword');
    echo $myUser->get_password();
  }
}

我简化了代码以使其更清晰,但您明白了。

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

带有自定义页面的新Relic插件

분류에서Dev

带有删除和通知通知的自定义arraylist

분류에서Dev

带有Kingpin注释的Apple MapKit将自定义注释聚类

분류에서Dev

带括号返回且没有得到不同的结果

분류에서Dev

Laravel自定义变形

분류에서Dev

PowerShell脚本数据库查询未传递所有结果

분류에서Dev

javaee 6 rest api命名查询结果

분류에서Dev

比较具有替代顺序的自定义类型的std :: tuple(或std :: pair)。是否可以插入自定义小于/比较功能?

분류에서Dev

如何使用d3.domain / range拥有自定义域

분류에서Dev

自定义tableViewCell中的NSTimer

분류에서Dev

使用数据库查询结果填充下拉列表

분류에서Dev

在这种情况下,对于带有“选择计数(columnName)...”的本机查询,返回类型为java.math.BigDecimal。

분류에서Dev

Kohana DB表达式未返回正确的结果

분류에서Dev

MySQL ORDER BY与LIMIT 1结合返回空结果

분류에서Dev

返回带有计算属性的Promise

분류에서Dev

在IE中自定义“您最受欢迎的网站”?

분류에서Dev

使用GSON自定义反序列化枚举

분류에서Dev

Android Studio无法识别自定义视图类

분류에서Dev

自定义非嵌套余烬路线的加载模板

분류에서Dev

Cordova / Phonegap自定义构建文件名

분류에서Dev

自定义水平滚动条逻辑

분류에서Dev

Excel 2010:使用图标列表作为自定义列表

분류에서Dev

Android Camera结果崩溃

분류에서Dev

即使查询为NULL,也如何返回所有行

분류에서Dev

状态列表可绘制的自定义单选按钮未更改

분류에서Dev

spring-boot不评估基于自定义百里香方言的标签

분류에서Dev

为自定义域配置Google App Engine SSL

분류에서Dev

X可编辑的自定义输入,其中包含注入的数据和下拉菜单

분류에서Dev

在自定义排除条件下使用strip_tags

Related 관련 기사

  1. 1

    带有自定义页面的新Relic插件

  2. 2

    带有删除和通知通知的自定义arraylist

  3. 3

    带有Kingpin注释的Apple MapKit将自定义注释聚类

  4. 4

    带括号返回且没有得到不同的结果

  5. 5

    Laravel自定义变形

  6. 6

    PowerShell脚本数据库查询未传递所有结果

  7. 7

    javaee 6 rest api命名查询结果

  8. 8

    比较具有替代顺序的自定义类型的std :: tuple(或std :: pair)。是否可以插入自定义小于/比较功能?

  9. 9

    如何使用d3.domain / range拥有自定义域

  10. 10

    自定义tableViewCell中的NSTimer

  11. 11

    使用数据库查询结果填充下拉列表

  12. 12

    在这种情况下,对于带有“选择计数(columnName)...”的本机查询,返回类型为java.math.BigDecimal。

  13. 13

    Kohana DB表达式未返回正确的结果

  14. 14

    MySQL ORDER BY与LIMIT 1结合返回空结果

  15. 15

    返回带有计算属性的Promise

  16. 16

    在IE中自定义“您最受欢迎的网站”?

  17. 17

    使用GSON自定义反序列化枚举

  18. 18

    Android Studio无法识别自定义视图类

  19. 19

    自定义非嵌套余烬路线的加载模板

  20. 20

    Cordova / Phonegap自定义构建文件名

  21. 21

    自定义水平滚动条逻辑

  22. 22

    Excel 2010:使用图标列表作为自定义列表

  23. 23

    Android Camera结果崩溃

  24. 24

    即使查询为NULL,也如何返回所有行

  25. 25

    状态列表可绘制的自定义单选按钮未更改

  26. 26

    spring-boot不评估基于自定义百里香方言的标签

  27. 27

    为自定义域配置Google App Engine SSL

  28. 28

    X可编辑的自定义输入,其中包含注入的数据和下拉菜单

  29. 29

    在自定义排除条件下使用strip_tags

뜨겁다태그

보관