Hallo zusammen,
ich bin neu im Thema yii und habe noch nicht alle features durch.
Ich habe eine Tabelle Termine mit folgenden Feldern:
id, datum, startzeit, endzeit, mitarbeitername, kundenname,…
Angenommen, ich habe in der _form einen create Button.
Nun soll vor dem Speichern (Create oder Update) geprüft werden, ob es es
schon einen entsprechenden Termin für den Mitarbeiter am gleichen Tag gibt.
Mein erster Gedanke war, dass ich die bevorsave Methode der Klasse Termine überschreibe
und Prüfungen durchführe und dann die Speicherung veranlasse oder über eine Fehlermeldung blockiere.
Hat jemand eine Ahnung wie das in yii funktionieren könnte ? Eventuell mit Criterium alla
protected function beforeSave()
{
//Konvert German Date into MySQL Date
$this->Datum = strtotime ($this->Datum);
$this->Datum = date ('Y-m-d', $this->Datum);
$datumc = $this->Datum;
$mitarbeiterc = $this->Mitarbeiter;
$startzeitc = $this->Startzeit;
$endzeitc = $this->Endzeit;
$ok = checkTerminvalide($datumc,$mitarbeiterc,$startzeitc,$endzeitc)
if(parent::beforeSave()){
return TRUE;
}
else return false;
}
public function checkTerminvalide($datumc,$mitarbeiterc,$startzeitc,$endzeitc){
$criteria=new CDbCriteria;
$criteria->select='Datum','Mitarbeiter','Startzeit','Endzeit'; // Nur die 'title' Spalte wird ausgewählt
$criteria->condition='Datum=:{$datumc}','Mitarbeiter=:{$mitarbeiterc}';
$criteria->params=array(':startzeit'<{$startzeitc},':startzeit'>{$endzeitc},':endzeit'<{$startzeitc},':startzeit'>{$endzeitc});
$post=Termin::model()->find($criteria); // $params ist nicht nötig
return irgendeine Variable oder Record
}
Ich weiss auch noch nicht, wie ich die Start- und Endzeiten so über Criteria vergleiche, dass hier eine sinnvolle Abfrage dabei herauskommt. Hat irgendwer eine Ahnung wie man das machen könnte?
Brächte dringend Hilfe !
Gruß