如何根据CodeIgniter中的表生成一个空类?

时间:2012-01-06 22:17:15

标签: codeigniter

我在codeigniter中有一个包含行id, name,email的表。我有一个视图,我有一个看起来像这样的表单:

<input name='name' value='<?= $record->name; ?>' />
<input name='name' value='<?= $record->email; ?>' />

我还想在新记录和空记录上使用该表单。有没有办法使用CodeIgniters db类生成一个带有db结果结构的空stdClass,这样这段代码就不会引发一堆通知&amp;错误?

3 个答案:

答案 0 :(得分:2)

这没有默认解决方案。您必须自己使用所有(空)属性填充对象,或者只检查属性是否存在。

<input name='name' value='<?= isset($record->email) ? $record->email : ''; ?>' />

不要忘记在form_prep()上运行value

如果你想尝试这个,你可以创建一个虚拟类。

class DB_Record {
    function __get($prop) {
        return isset($this->$prop) ? $this->$prop : NULL;
    }
}

然后让你的记录成为它的一个实例:

$record = new DB_Record;
// fetch data from your database and assign to properties of $record

然后,当访问不可访问的属性时,它将返回NULL

答案 1 :(得分:1)

试试这个,其中团队是一个表名:

$r = new stdClass();
foreach ($this->db->field_data('teams') as $f) {
  $r->{$f->name} = '';  
}

I.E:团队是MySQL表,其中包含字段:TeamName,Location,State

$ r将像对象一样:

$r->TeamName = ''
$r->Location = ''
$r->State = ''

等等。

答案 2 :(得分:0)

我认为你可以做的最好的事情就是你使用form_helper中的set_value函数,这样你的代码就会变成:

<input name='name' value='<?= set_value('name', $record->name); ?>' />
<input name='email' value='<?= set_value('email',$record->email); ?>' />

您可以在from_helper

了解有关form_helper的更多信息