2012-04-06 2 views
0

Я хочу заполнить пустую модель и сохранить модель в поле blob для последующего использования. Моя проблема в том, что я не могу найти, как добавить строку anouter в пустую модель.добавить строку к модели

это работает:

$test = LineItem::model(); 
$test->item_id = '2'; 

Это не работает

$test->1->item_id = '3'; 

или

$test->item_id[1] = '3'; 

Я попытался посмотреть в документации Yii, но я не смог найти ответ.

Благодаря

Разъяснение Im пытаясь создать ложную таблицу, используя модель реальной таблицы. Я работаю над системой выставления счетов, и я не хочу править позиции или информацию тела счета в БД до тех пор, пока она не будет закрыта. Вместо этого я хочу заполнить соответствующие модели, которые затем будут сериализованы и сохранены в поле BLOB. Как только счет будет завершен, данные будут записаны в таблицу.

+2

Я не уверен, что вы делаете это правильно. Сериализация строки модели, вставка ее в BLOB в базе данных в памяти звучит как много хлопот - я думаю, что было бы лучше записать ее в реальную строку базы данных, но с буфером 'is_closed', который вы можете установить когда счет-фактура закрывается. – halfer

+0

@halfer, Спасибо за предложение. Я на самом деле делаю это сейчас, но это вызывает проблему без последовательных номеров счетов. Если окно закрывается или счет не завершен, он остается открытым в БД. Я надеялся избежать этого. Я также хотел использовать вышеупомянутую схему как метод отслеживания и архивирования для изменений. Размышляя об этом в выходные, я могу вернуться к моей предыдущей схеме массивов и отказаться от использования моделей БД. –

+0

Я думаю, что это нормально для того, чтобы «сидеть открытыми» в db, до тех пор, пока пользователь явно не закрывает его. Если ваша проблема заключается в том, что номера счетов-фактур _should_ должны быть последовательными, а в настоящее время их нет, то интересно, пытаетесь ли вы использовать первичный ключ в качестве номера общего счета? Я думаю, что это не может быть лучшим решением; первичные и внешние ключи предназначены для ссылочной целостности, а не для ссылки на человека. Добавьте еще один столбец (с уникальным ограничением, если это необходимо) для вашего последовательного номера счета-фактуры клиента - и, если это необходимо для вашей ERD-версии, его можно обнулить, так что только реальные счета-фактуры («закрыты»?) Получают один. – halfer

ответ

0

Вы должны использовать

$test = new LineItem; 

вместо

$test = LineItem::model(); 

для INSERT запросов. И после настройки свойств

$test->save(); 

И так на каждой итерации.

+0

Спасибо за ответ, но не то, что им нужно. Мне нужно добавить строку только к модели и не сохранить ее в БД. IE Я хочу создать таблицу в памяти с помощью модели. –

+0

О, извините. Но я думаю, что эти операции отвечают требованиям механизма DataBase, а не ORM. –

+0

Спасибо, Алиран. –

Смежные вопросы