Yii Framework Forum: Datum Von Datepicker In Db Speichern - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Datum Von Datepicker In Db Speichern Rate Topic: -----

#1 User is offline   Franker 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 36
  • Joined: 02-January 13

Posted 05 February 2013 - 08:37 AM

Hallo,

ich würde gerne ein Datum vom Datepicker in meiner Datenbank speichern. Dazu hätte ich ein paar Fragen.

1. Welches Format könnt ihr empfehlen? (Timestamp, Datetime)
2. Wie wandelt man das Datum geeignet um? (Ich habe hier etwas vom CTimestampBehavior gelesen. Wie nutze ich den?)

Man soll das behavior im Model definieren, richtig?

public function behaviors(){
return array(
    'CTimestampBehavior' => array(
        'class' => 'zii.behaviors.CTimestampBehavior',
        'createAttribute' => 'create_time',
        'updateAttribute' => 'update_time',
        'setUpdateOnCreate'=> true,
    )
);
}


Was bringt mir das? Er weiß doch dann weder, welches Feld er umformatieren soll, noch, in welches Format? Ich denke mal, dass ich generell den Einsatz von Behaviors noch nicht verstanden habe. Kann mir da vielleicht jemand etwas auf die Sprünge helfen?

Danke!
0

#2 User is offline   Mike 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 3,016
  • Joined: 06-October 08
  • Location:Upper Palatinate

Posted 05 February 2013 - 02:14 PM

CTimestampBehavior ist für was anderes gedacht: Es ist bewährte Praxis, jeder Tabelle mit vielen dynamischen Daten 2 Timestamp-Spalten zu verpassen. Eine enthält den Zeitstempel wann der Eintrag angelegt wurde, die andere, wann er zuletzt aktualisiert wurde. Das Behavior setzt diese Werte automatisch jedesmal wenn ein Record angelegt/gespeichert wird.

Was du suchst ist evtl. eher sowas wie das i18n-datetime-behavior (extension). Die ist zwar schon etwas betagt, sollte aber immer noch tun :).

Zu deiner Frage nach Behaviors: Sieh dir dazu mal diesen Abschnitt im Guide an: http://www.yiiframew...ponent#behavior

Kurzgesagt kannst du mit Behaviors zusätzliche Methoden an deine Klassen anfügen. Manche Behaviors machen intensiven Gebrauch von Yii's Event-System. Damit passieren dann manche Sachen automatisch. Das genannte CTimestampBehavior nutzt z.B. das "onBeforeSave" event, das jedesmal "abgefeuert" wird, kurz bevor ein Record geschrieben wird und setzt dann die 2 Spalten auf die entsprechenden Datumswerte.
0

#3 User is offline   mbi 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 604
  • Joined: 08-May 09

Posted 05 February 2013 - 02:59 PM

ich speicher ein Datum immer im YYYY-MM-DD-Format und benutze das CMaskedTextField-Widget, wo ich im Format dd.mm.YYY eingeben lasse. Das heisst, ich wandel im beforeSave() nach YYYY-MM-DD um und im AfterFind() zurück
0

#4 User is offline   Franker 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 36
  • Joined: 02-January 13

Posted 06 February 2013 - 06:40 PM

Hey,

danke, mit beforeSave und afterFind hat alles geklappt. habe es genau so geregelt wie du.

Beste Grüße!
0

#5 User is offline   guaruja 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 68
  • Joined: 10-March 12

Posted 12 February 2013 - 07:52 AM

View PostFranker, on 05 February 2013 - 08:37 AM, said:

1. Welches Format könnt ihr empfehlen? (Timestamp, Datetime)


Wichtig zu wissen ist:

1.
DATETIME speichert das Datum (in Kalendernotation und) ohne Zeitzonenkonvertierung ab.

2.
TIMESTAMP konvertiert vor dem Speichern von der aktuellen Zeitzone nach UTC - und beim Auslesen wieder in die aktuelle Zeitzone zurueck.

Zur Speicherung von User Input ist daher DATETIME besser geeignet.

Jetzt kann man noch die Variante diskutieren ob man auf DATETIME setzt oder auf ein INT Feld um eine (von PHP erzeugte) Timestamp zu speichern. Ich kenne einige Projekte die letzteres tun.
Ich persoenlich ziehe DATETIME Felder vor, insbesondere weil man in der Datenbank direkt das Datum lesen kann ohne jedesmal Timestamps umrechnen zu muessen. Fehlersuche und schnellere, kleinere Korrekturen direkt in der DB gehen damit leichter von der Hand. Letzendes ist halt ein Datum fuer Mennschen intuitiver zu lesen als eine Timestamp...
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users