【问题标题】:Tying Model to Query Result in CodeIgniter?在 CodeIgniter 中将模型绑定到查询结果?
【发布时间】:2011-09-23 21:56:00
【问题描述】:

这是他们的文档所说的

你也可以将一个字符串传递给 result(),它代表一个类 为每个结果对象实例化(注意:必须加载此类)

$query = $this->db->query("SELECT * FROM users;"); 
foreach ($query->result('User') as $user) {    
    echo $row->name; // call attributes    
    echo $row->reverse_name(); // or methods defined on the 'User' class 
}

尽管他们正在回显 $row 而不是 $user... 这似乎对我不起作用。这是我的测试版本

型号

class User extends CI_Model{
    var $first;
    var $last;
..  
    function getName() {
        return $this->first + " " + $this->last;
    }
}   

控制器

class Tester extends CI_Controller {

     public function index() {
          $this->load->model('User');
          $query = $this->db->query('SELECT * from USERS');
          $data = array (
              'regular' => $query->result(),
              'modeled' => $query->result('User')
          );
          $this->load->view('test', $data);
     }
}

查看

foreach ($regular as $row) {
    echo "{$row->FIRST} {$row->LAST} <BR/>";
}

echo "<br/>";

foreach ($modeled as $row) {
    echo "{$row->getName()} <BR/>";
}

我做错了什么或误解了吗?我会假设根据他们的文档,如果我将一个类分配给结果集,那么该类应该填充结果吗?现在,如何继续知道要映射到哪个字段对我来说是一个谜,并且很可能是这不起作用的原因。我想也许我需要修改构造函数来做这个映射,但我没有看到任何关于我将如何去做的文档。我尝试为构造函数输入一个参数,假设它是一个 StdClass 数组,但似乎不起作用。

任何澄清都会很棒!

【问题讨论】:

  • 你试过 echo $user->name;
  • $query->result('User') 如果你使用 put $query->result_array();

标签: codeigniter model


【解决方案1】:

所以我突然想到检查 db_results 函数的实际源代码,我认为这是由于查询结果列的情况。除非您在查询字符串中将其指定为小写,否则 CI 似乎将所有内容默认为大写。

因此,总而言之,无论您的查询中的列是什么情况,您的模型中的值都应该是这种情况!

虽然看起来很荒谬......我可能会看看我是否可以将核心类编辑为不区分大小写。除非有人有更好的选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多