2012-01-06 43 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 = '' 

等等。

相關問題