2012-01-06 16 views
0

我在codeigniter中有一个表id, name,email。我有一个观点,我有一个看起来是这样一种形式:如何根据CodeIgniter中的表生成一个空类?

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

我也想使用新的和空记录的形式。有没有办法使用CodeIgniter的db类生成一个空的stdClass结构的数据库结果,以便这段代码不会抛出一堆通知&错误?

回答

2

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

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

不要忘记上运行这些value小号form_prep()

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

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

0

我认为你能做的最好的事情就是这样,你使用SET_VALUE功能从form_helper使您的代码将被更改为:在from_helper

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

你可以阅读更多关于form_helper

+0

我想你错过了这一点,OP很可能会'试图访问属性的非对象错误,因为$ record'没有任何属性(或者maye未定义)添加新条目时。 – 2012-01-07 21:37:50

+0

这就是@Madmartigan,如果他想在新记录中使用它,他只需要创建'$ record'对象并添加两个字段,如:'$ record-> name ='';'和'$ record-> email =''',除非我再次错过了这一点 – zaherg 2012-01-07 21:46:09

1

试试这个,在是表名:

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

IE:团队是MySQL的表字段:TeamName,位置,状态

$ R将是对象,如:

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

等等。

相关问题