Как я могу создать пустой класс на основе таблицы в CodeIgniter? - PullRequest
0 голосов
/ 07 января 2012

У меня есть таблица в codeigniter со строками id, name, и email.У меня есть одно мнение, что у меня есть форма, которая выглядит примерно так:

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

Я также хотел бы использовать форму на новых и пустых записях.Есть ли способ использовать класс db CodeIgniters для генерации пустого класса stdClass со структурой результата db, чтобы этот код не выдавал кучу уведомлений и ошибок?

Ответы [ 3 ]

2 голосов
/ 08 января 2012

Нет решения по умолчанию для этого. Вы должны либо самостоятельно заполнить объект всеми (пустыми) свойствами, либо просто проверить, существует ли свойство.

<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 голос
/ 18 августа 2012

попробуйте это, где команды - это имя таблицы:

$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 = ''

и т. Д.

0 голосов
/ 08 января 2012

лучшее, что я думаю, вы можете сделать, это использовать функцию set_value из form_helper, чтобы ваш код был изменен на:

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

Вы можете узнать больше о form_helper на from_helper

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...