2012-04-06 123 views
0

我想填充空模型並將模型保存在blob字段中供以後使用。我的問題是我無法找到如何添加一個行到空模型。向模型添加一行

這個工程:

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

這不起作用

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

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

我試圖尋找了Yii的文檔中,但我無法找到答案。

感謝

澄清 我試着去創建一個使用一個真正的表的模型假表。我正在開發一個發票系統,並且我不想將訂單項或發票正文信息修改到數據庫,直到它「關閉」。相反,我想填充相應的模型,然後將其序列化並存儲在BLOB字段中。發票完成後,數據將被寫入表格。

+2

我不確定你是否以正確的方式做到這一點。序列化模型行,將其插入到內存數據庫中的BLOB聽起來像很麻煩 - 我認爲將它寫入真正的數據庫行會更好,但有一個可以設置的「is_closed」布爾列發票何時關閉。 – halfer 2012-04-06 20:44:43

+0

@halfer,謝謝你的建議。我實際上正在做這件事,但它沒有連續的發票號碼造成問題。如果窗口關閉或發票未完成,它將在數據庫中打開。我希望避免這種情況。我也想用上面提到的方案作爲變化的追蹤和歸檔方法。考慮週末我可能會回到以前的陣列方案,並放棄使用數據庫的模型。 – 2012-04-09 15:42:33

+0

我認爲它可以在數據庫中「坐下」,只要用戶沒有明確地關閉它。如果您的問題是發票號碼應該連續並且目前不是,那麼我想知道您是否嘗試將主鍵用作公共發票號碼?我認爲這可能不是最好的解決方案;主鍵和外鍵用於引用完整性,而不是供人蔘考。爲您的連續客戶發票編號添加另一列(如果適用,請附帶一個唯一的約束) - 如果適合您的ERD,則可以爲空,所以只有真正的發票('關閉')才能獲得一個。 – halfer 2012-04-09 16:05:00

回答

0

,您應該使用的

$test = new LineItem; 

代替

$test = LineItem::model(); 

的INSERT查詢。並設置屬性後

$test->save(); 

所以在每一次迭代。

+0

感謝您的答案,但不是什麼即時通訊尋找..我需要只添加一行到模型,而不是將其保存到數據庫。 IE我想用這個模型創建一個內存表。 – 2012-04-06 20:34:31

+0

哦,對不起。但我認爲這些操作是負責DataBase引擎的,而不是針對ORM的。 – 2012-04-06 21:22:28

+0

謝謝Aleander。 – 2012-04-09 15:43:08