Hallo,
auf empfehlung habe ich mir mal das Framework flourish angesehen.
(http://flourishlib.com)
Nun versuche ich gerade meine eigene Base-Model-Klasse drumrum zu basteln.
Problem:
Meine Column-Names sind _immer_ UPPERCASE, dies sollte auch so bleiben.
Laut Doku kann man mit
die Default-Tabellen-Namen überschreiben, wenn man wie ich andere Namen nutzt als alles lowercase und was weiß ich wie verarbeitet.
$tableName ist der von fORM erwartete Klassenname, in $schema stehen die Column-Names drinne, wie ich sie von diesem geliefert bekommen sollte.
Nun treten folgende Fehler auf:
Lade ich ein Objekt
wirft er eine Notice aus:
Die Column-Names sind die richtigen.
Rufe ich nun aber bspw. "setVersion(1)" auf, so schickt er den Column-Name dennoch lowercase an seine set-Methode.
Hilft in diesem Fall.
Habe ich ein neues Objekt geladen (also den Konstruktor ohne Parameter aufgerufen), stimmt das Casing wiederum nicht, alle Tabellen sind lowercase geladen.
So kann ich dann natürlich nicht mehr mit meinem "set-Fix" alles überschreiben.
Kennt sich wer genug mit dem Teil aus, um mir damit ein wenig zu helfen?
Neue Instanz ohne Parameter erzeugt:
Neue Instanz mit Parameter erzeugt (Parameter 1):
auf empfehlung habe ich mir mal das Framework flourish angesehen.
(http://flourishlib.com)
Nun versuche ich gerade meine eigene Base-Model-Klasse drumrum zu basteln.
Problem:
Meine Column-Names sind _immer_ UPPERCASE, dies sollte auch so bleiben.
Laut Doku kann man mit
Code:
\fORM::overrideColumnName($fActiveRecordObject_or_className, $name, $myName)
Code:
public function fakeColumnNamesForORM($tableName, $schema) { foreach ($schema as $column) { \fORM::overrideColumnName($tableName, $column, strtoupper($column)); } }
Nun treten folgende Fehler auf:
Lade ich ein Objekt
Code:
$objekt = new Version(1);
Code:
Undefined index: id in <b>C:\php\cms\core\flourishFramework\fActiveRecord.php</b> on line <b>1958</b>
Rufe ich nun aber bspw. "setVersion(1)" auf, so schickt er den Column-Name dennoch lowercase an seine set-Methode.
Code:
public function set($column, $value) { parent::set(strtoupper($column), $value); }
Habe ich ein neues Objekt geladen (also den Konstruktor ohne Parameter aufgerufen), stimmt das Casing wiederum nicht, alle Tabellen sind lowercase geladen.
So kann ich dann natürlich nicht mehr mit meinem "set-Fix" alles überschreiben.
Kennt sich wer genug mit dem Teil aus, um mir damit ein wenig zu helfen?
Neue Instanz ohne Parameter erzeugt:
Code:
object(Version)#1 (5) { ["_mapperKey":protected]=> string(7) "version" ["cache":protected]=> array(0) { } ["old_values":protected]=> array(0) { } ["related_records":protected]=> array(0) { } ["values":protected]=> array(4) { ["version"]=> NULL ["created_at"]=> NULL ["last_modified_at"]=> NULL ["id"]=> NULL } }
Code:
<br /> <b>Notice</b>: Undefined index: id in <b>C:\php\cms\core\flourishFramework\fActiveRecord.php</b> on line <b>1958</b><br /> object(Version)#1 (5) { ["_mapperKey":protected]=> string(7) "version" ["cache":protected]=> array(0) { } ["old_values":protected]=> array(0) { } ["related_records":protected]=> array(0) { } ["values":protected]=> array(5) { ["id"]=> NULL ["VERSION"]=> string(1) "0" ["CREATED_AT"]=> object(fTimestamp)#28 (2) { ["timestamp":protected]=> int(1406566877) ["timezone":protected]=> string(13) "Europe/Berlin" } ["LAST_MODIFIED_AT"]=> object(fTimestamp)#27 (2) { ["timestamp":protected]=> int(1406566877) ["timezone":protected]=> string(13) "Europe/Berlin" } ["ID"]=> string(1) "1" } }
Kommentar