[TYPO3-german] Extbase NULL in DB speichern

g4-lisz at tonarchiv.ch g4-lisz at tonarchiv.ch
Fri Apr 10 14:12:19 CEST 2015


Hi Mike,

die entsprechenden Felder in der DB sind alle auf NULL default NULL. An
der DB selbst sollte es nicht liegen.

Eine Merkwürdige Sache:

Wenn ich in einen Setter den Wert fest auf NULL setze, dann bleibt er
auch in der DB NULL.

Also:

     /**
      * Sets the mw
      *
      * @param float $mw
      * @return void
      */
     public function setMw($mw) {
             $this->mw = NULL;
     }

Nun wundere ich mich schon sehr, wie der Setter unterschiedlich
arbeitet, je nach dem ob man ihm NULL als Argument übergibt (kommt auch
nachweislich als NULL in der Funktion an, siehe "if($mw == NULL)
$this->mw = 999;" oder ob man die NULL fest setzt.

Etwas misteriös...

Grüße,
Till

On 04/10/2015 11:33 AM, Mikel wrote:
> Hallo Till,
>
> wie sieht der Aufbau Deiner DB-Tabelle aus (siehe ext_tables.sql)?
> Dies hat weniger mit dem Model oder dergleichen wie mit dem Setup der
> DB zu tun.
> Das entsprechende Feld muss den Wert NULL erlauben und per Default
> auch auf NULL gesetzt werden.
>
> Like this:
> name_der_spalte int(11) NULL default NULL
>
> Mikel
>> Hallo allerseits,
>>
>> wie kann ich es einrichten, dass leere Formularfelder in der Datenbank
>> als NULL gespeichert werden?
>>
>> Hintergrund ist, dass das Formular viele Felder mit Zahlenwerten hat.
>> Wenn man diese nicht ausfüllt, soll aber nicht 0 sondern NULL abgelegt
>> werden, damit man später unterscheiden kann, ob das entspr. Feld
>> ausgefüllt wurde oder nicht.
>>
>> Ich habe die entspr. Felder in der DB auf default NULL gesetzt, ebenso
>> in der Deklaration in der Modellklasse,
>>
>> also z.B
>>
>>      /**
>>       * mw
>>       *
>>       * @var float
>>       */
>>      protected $mw = null;
>>
>>      /**
>>       * mw2
>>       *
>>       * @var float
>>       */
>>      protected $mw2 = null;
>> usw.
>>
>> Solange ich kein Feld im Formular ausfülle, bleiben auch tatsächlich
>> alle Felder der entspr. Tabelle NULL.
>> Sobald ich aber ein einzelnes Feld des Objekts ändere, werden alle
>> anderen leeren beim Speichern mit 0 überschrieben.
>>
>> An den POST-Daten liegt es nicht, die kommen bei leeren Formularfeldern
>> auch wirklich als NULL im Setter an:
>>      /**
>>       * Sets the mw
>>       *
>>       * @param float $mw
>>       * @return void
>>       */
>>      public function setMw($mw) {
>>          if($mw == NULL)
>>              $this->mw = 999;
>>          else
>>              $this->mw = $mw;
>>      }
>>
>> Wenn ich nun das entspr. Feld leer lasse, wird tatsächlich 999 in der DB
>> abgelegt.
>> Explizit NULL ablegen scheint aber leider nicht zu klappen.
>>
>> Oder kann man das evtl. in der TCA entsprechend konfigurieren?
>>
>> Grüße,
>> Till
>> _______________________________________________
>> TYPO3-german mailing list
>> TYPO3-german at lists.typo3.org
>> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
>
> _______________________________________________
> TYPO3-german mailing list
> TYPO3-german at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german



More information about the TYPO3-german mailing list