2012-04-06 11 views
0

Ich möchte ein leeres Modell ausfüllen und das Modell in einem Blob-Feld für die spätere Verwendung speichern. Mein Problem ist, dass ich nicht finde, wie man dem leeren Modell eine zweite Zeile hinzufügt.eine Zeile zu einem Modell hinzufügen

dies funktioniert:

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

Diese nicht

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

oder

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

funktioniert ich versucht habe in der Yü Dokumentation suchen, aber ich war nicht in der Lage, eine Antwort zu finden.

Dank

Klärung Im Versuch, eine falsche Tabelle einer realen Tabelle mit dem Modell zu erstellen. Ich arbeite an einem Fakturierungssystem und möchte die Werbebuchungen oder Rechnungskörperinformationen nicht in der DB korrigieren, bis sie "geschlossen" ist. Stattdessen möchte ich die entsprechenden Modelle füllen, die dann serialisiert und in einem BLOB-Feld gespeichert werden. Sobald die Rechnung fertig ist, werden die Daten in die Tabelle geschrieben.

+2

Ich bin mir nicht sicher, dass du das richtig machst. Das Serialisieren einer Modellreihe, das Einfügen in ein BLOB in einer In-Memory-Datenbank, klingt nach viel Aufwand - ich denke, es wäre besser, sie in eine echte Datenbankzeile zu schreiben, aber eine boolesche 'is_closed'-Spalte wenn die Rechnung geschlossen wird. – halfer

+0

@halfer, Danke für den Vorschlag. Ich tue das jetzt tatsächlich, aber es verursacht Problem mit keine aufeinanderfolgenden Rechnungsnummern. Wenn das Fenster geschlossen wird oder die Rechnung nicht fertig ist, steht es in der Datenbank offen. Ich hatte gehofft, das zu vermeiden. Ich wollte das oben erwähnte Schema auch als Tracking- und Archivierungsmethode für Änderungen verwenden. Wenn ich am Wochenende darüber nachdenke, kann ich zu meinem vorherigen Array-Schema zurückkehren und auf die Modelle der DB verzichten. –

+0

Ich denke, es ist in Ordnung für es in der db sitzen offen, solange der Benutzer es nicht explizit schließt. Wenn Ihr Problem darin besteht, dass Rechnungsnummern _konsekutiv_ fortlaufend sein sollten und dies derzeit nicht der Fall ist, dann frage ich mich, ob Sie versuchen, einen Primärschlüssel als öffentliche Rechnungsnummer zu verwenden? Ich denke, das ist vielleicht nicht die beste Lösung. Primär- und Fremdschlüssel dienen der referenziellen Integrität und nicht der menschlichen Referenz. Fügen Sie eine weitere Spalte (ggf. mit einer eindeutigen Einschränkung) für Ihre sequenzielle Kundenrechnungsnummer hinzu - und wenn dies für Ihre ERD angemessen ist, lassen Sie sie nULL-fähig werden, sodass nur echte Rechnungen ("geschlossen"?) Eins erhalten. – halfer

Antwort

0

sollten Sie

$test = new LineItem; 

statt

$test = LineItem::model(); 

für INSERT-Abfragen verwenden. Und nach dem Einstellen der Eigenschaften

$test->save(); 

Und so in jeder Iteration.

+0

Danke für die Antwort, aber nicht was ich suche .. Ich muss nur eine Zeile zum Modell hinzufügen und nicht in der Datenbank speichern. IE Ich möchte eine In-Memory-Tabelle mit dem Modell erstellen. –

+0

Oh, Entschuldigung. Aber ich denke, diese Operationen sind in der Verantwortung der DataBase-Engine, nicht für ORM. –

+0

Danke Aleander. –

Verwandte Themen