result() 的文档说我们可以传递一个类的名称来为每个结果对象实例化:http://codeigniter.com/user_guide/database/results.html
我无法找到正确的方法。我需要将几个字段从结果对象传递给构造函数。
$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
}
如果有更好的方法,请告诉我!
答案 0 :(得分:0)
你不能。
实例化的对象不能传递任何参数,这意味着您需要创建一个方法来将这些字段传递给实例化的对象:
$query = $this->db->query("SELECT * FROM users;");
foreach ($query->result('User') as $user)
{
$row->init_my_fields('field1', 'field2'); //instead of passing the fields through the __construct()
echo $row->name; // call attributes
echo $row->reverse_name(); // or methods defined on the 'User' class
}
答案 1 :(得分:0)
您可以在User类中创建一个静态Class方法来创建用户或用户实例。您需要将适当的实例变量添加到User类。
var $username = FALSE;
var $password = FALSE;
public static function get_user_by_id($id)
{
$CI =& get_instance();
$query = $CI->db->get_where('users', array('id' => $id));
$user = $query->row(0, 'User');
return $user;
}
在示例中,我获取了对CodeIgniter实例的引用以访问数据库。因为您不能从Class方法访问数据库,因为它不是对象实例。