Yii Framework Forum: Datenbankabfragen Bevorsave - Yii Framework Forum

Jump to content

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

Datenbankabfragen Bevorsave Rate Topic: -----

#1 User is offline   wickedsmith 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 4
  • Joined: 25-March 13

Posted 06 April 2013 - 07:40 AM

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ß
0

#2 User is offline   mbi 

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

Posted 06 April 2013 - 07:52 AM

ich würde eine Validator-methode oder einen Validator schreiben

http://www.yiiframew...alidation-rules
http://www.yiiframew.../1.1/CValidator
0

#3 User is offline   wickedsmith 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 4
  • Joined: 25-March 13

Posted 06 April 2013 - 03:16 PM

Hallo und Danke,

ich habe es nun mit einer Validatormethode versucht, die ich in eine Klasse
TerminValidator extends CBehavoir gepackt habe.

Die rufe ich aus dem Controller heraus auf und prüfe erst einmal
ob schon Termine drin sind. Das klappt auch.

Ich suche noch nach Möglichkeiten, wie ich in yii einen Dialog anzeigen kann
also so etwas wie eine MessageBox unter C# oder VB6.

Hab da was von setFlash gelesen. Komme ich damit weiter?
Ich würde mir (zum Debuggen) gerne mal Werte anzeigen lassen. ::)

Gruß
0

#4 User is offline   mbi 

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

Posted 08 April 2013 - 03:24 AM

View Postwickedsmith, on 06 April 2013 - 03:16 PM, said:

Hallo und Danke,

ich habe es nun mit einer Validatormethode versucht, die ich in eine Klasse
TerminValidator extends CBehavoir gepackt habe.

Die rufe ich aus dem Controller heraus auf und prüfe erst einmal
ob schon Termine drin sind. Das klappt auch.

Gruß


Wenn das klappt, gut. Aber:
- ein model validiert sich quasi selbst ($model->validate()), das brauch der controller eigentlich nicht tun.
- ein Validator erbt mindestens von CValidator oder ist eine methode im model
0

#5 User is offline   SleepWalker 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 17
  • Joined: 02-June 12
  • Location:Ukraine

Posted 11 April 2013 - 02:30 PM

Hallo, wickedsmith

welche Dialog du brauchst eigentlich? Willst du nur zeigen Nutzer irgendwelche Information, oder willst du gewisse Information bekommen?

Du kannst nutzen setFlash(), jQuery Dialog plugin, javascript alert() function, falls du willst Benutzer zu berichten.
Falls du zusätzliche Information von Benutzer brauchst, du kannst jQuery Dialog plugin oder javascript promt() function.
houath - simple integration with social network authorization on Yii
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