Как в настоящее время я могу добавить объект в базу данных с помощью Zend Framework? - PullRequest
1 голос
/ 01 октября 2009

Я хочу сохранить объект или форму в базе данных. Только я не могу найти самый простой (или нормальный) способ, как это сделать.

Я нашел много уроков, но ни один из них не кажется простым или актуальным. Может кто-нибудь, пожалуйста, помогите мне с этим?

Я использую версию 1.9.3 Zend Framework.

Ответы [ 2 ]

4 голосов
/ 01 октября 2009

Самый простой способ (так называемый способ использования наименьшего количества кода) вставить строку в таблицу базы данных с помощью Zend_Db:

$data = array(
    'created_on'      => '2007-03-22',
    'bug_description' => 'Something wrong',
    'bug_status'      => 'NEW'
);

$db->insert('bugs', $data);

Приведенный выше код вставит новую строку в таблицу bugs, тогда как $db - это подкласс Zend_Db_Adapter_Abstract, который вы создали с помощью Zend_Db::factory(). Пожалуйста, смотрите Запись изменений в базу данных в руководстве Zend Framework для получения более подробной информации и всего спектра функций, предоставляемых Zend_Db.

Ради полноты приведенный выше код выдаст запрос к базе данных, аналогичный:

INSERT INTO bugs (created_on, bug_description, bug_status) 
    VALUES ('2007-03-22', 'Something wrong', 'NEW')

Следующим шагом будет более сложный подход с использованием Zend_Db_Table.

EDIT:

Учитывая, что у вас есть Zend_Form ($form) с соответствующими полями created_on, bug_description и bug_status и при условии, что у вас есть нужные фильтры и валидаторы, добавьте новую строку со значениями приведенный в форме так же просто, как

if ($form->isValid($_POST)) {
    $db->insert('bugs', $form->getValues());
}

Хранить пользовательский объект также очень просто:

// $bug is your custom object representing a bug
$db->insert('bugs', array(
    'created_on'      => $bug->getCreatedOn(),
    'bug_description' => $bug->getDescription(),
    'bug_status'      => $bug->getStatus()
));
0 голосов
/ 01 октября 2009

Создайте экземпляр любого нужного вам объекта и сериализуйте его . После сериализации вы можете сохранить его или передать практически на любой носитель. Это то, что вы имеете в виду?

...