MySQL-Funktionen mit GenericCriterionObject verwenden

Dieser Bereich dient dazu, neue Features zu diskutieren und für die Entwicklung zu dokumentieren. // This area is dedicated to new features including proposals and documentation.
Gesperrt
Benutzeravatar
jwlighting
Beiträge: 466
Registriert: 14.07.2010, 14:23:58
Wohnort: LK Oldenburg
Kontaktdaten:

MySQL-Funktionen mit GenericCriterionObject verwenden

Beitrag von jwlighting » 03.01.2013, 13:18:31

Hallo zusammen,

ich bin gerade über die Tatsache gestolpert, dass alle Strings, die man GenericCriterionObject::addPropertyIndicator() als Werte übergibt 1:1 als Wert in der Datenbank gesucht werden.
Im konkreten Fall wollte ich Termine in einem bestimmten Datumsbereich finden, und brauchte dazu die MySQL-Funktionen ADDDATE() und NOW().

Das sah dann so aus:

Code: Alles auswählen

      // retrieve GORM
      /** @var $ORMF GenericORMapperFactory */
      $ORMF = $this->getServiceObject('modules::genericormapper::data', 'GenericORMapperFactory');
      $ORM = $ORMF->getGenericORMapper('modules::gorm', 'dates', 'devel_std', true);
      
      // build crterion
      $Crit = new GenericCriterionObject();
      $Crit->addPropertyIndicator('begin', 'ADDDATE(NOW(), INTERVAL -'.self::$DISPLAY_MINUTES_AFTER.' MINUTE)', '>');
      $Crit->addPropertyIndicator('begin', 'ADDDATE(NOW(), INTERVAL '.self::$DISPLAY_MONTH_BEFORE.' MONTH)', '<');
      
      // get dates
      $datesList = $ORM->loadObjectListByCriterion('Date', $Crit);
 
Haltet ihr es für sinnvoll, wenn wir dem GenericCriterionObject eine Möglichkeit hinzufügen, MySQL-Funktionen nutzbar zu machen?
Interessant wäre auch ein Support für BETWEEN.

LG :)
Jan

Menschen irren - Politiker sind Menschen.
Für den Norddeutschen ist 1kW = 2 Pfund Schlick.

Benutzeravatar
dr.e.
Administrator
Beiträge: 4533
Registriert: 04.11.2007, 16:13:53

Re: MySQL-Funktionen mit GenericCriterionObject verwenden

Beitrag von dr.e. » 04.01.2013, 08:39:34

Hallo Jan,

grundsätzlich ist für Abfragen eine solche Möglichkeit absolut sinnvoll. Die Methode addPropertyIndicator() war ursprünglich dazu gedacht wirklich 1:1 Strings zu suchen, dein Anwendungsfall funktioniert damit so natürlich auch.

Was bei Einführung von MySQL-Funktionen immer noch ein Thema ist, ist Tobi's Ansatz eine Datenbank-Abstraktion im GORM einzuführen, damit er z.B. auch SQLite einsetzen kann. Das würde bei der Implementierung von expliziten MySQL-Funktionen noch schwieriger werden.

Ich schlage vor, Tobi (Megger) und du überlegen sich eine Vorgehensweise und schreiben ein kurzes Proposal im Wiki. Einverstanden?
Viele Grüße,
Christian

Benutzeravatar
jwlighting
Beiträge: 466
Registriert: 14.07.2010, 14:23:58
Wohnort: LK Oldenburg
Kontaktdaten:

Re: MySQL-Funktionen mit GenericCriterionObject verwenden

Beitrag von jwlighting » 04.01.2013, 11:39:04

Was bei Einführung von MySQL-Funktionen immer noch ein Thema ist, ist Tobi's Ansatz eine Datenbank-Abstraktion im GORM einzuführen, damit er z.B. auch SQLite einsetzen kann.
Das bedeutet im Klartext, dass es absolut keinen SQL-Code mehr in der eigentlichen Anwendung gibt. Da bleibt eigentlich nur noch die Möglichkeit, jede SQL-Funktion über eine Methode der Abstraktionsschicht zu verwenden. Ich denke mal weiter drüber nach. Scheint ja ein ziemliches Faß zu sein, das Thema ;)

LG :)

Menschen irren - Politiker sind Menschen.
Für den Norddeutschen ist 1kW = 2 Pfund Schlick.

Thalo
Beiträge: 244
Registriert: 10.08.2009, 16:56:52

Re: MySQL-Funktionen mit GenericCriterionObject verwenden

Beitrag von Thalo » 28.01.2014, 17:17:41

Hi,

gibt es was neues? :)

Benutzeravatar
dr.e.
Administrator
Beiträge: 4533
Registriert: 04.11.2007, 16:13:53

Re: MySQL-Funktionen mit GenericCriterionObject verwenden

Beitrag von dr.e. » 29.01.2014, 00:52:28

Nein aktuell noch nicht. :) Sofern das Feature weiterhin interessant ist, formuliere mal einen Feature-Request.
Viele Grüße,
Christian

Benutzeravatar
jwlighting
Beiträge: 466
Registriert: 14.07.2010, 14:23:58
Wohnort: LK Oldenburg
Kontaktdaten:

Re: MySQL-Funktionen mit GenericCriterionObject verwenden

Beitrag von jwlighting » 29.01.2014, 20:51:25

Ich habe mir den Thread gerade noch einmal durchgelesen.

SQL-Funktionen sind ja vor allem sinnvoll, wenn man dadurch Aufgaben der Datenbank überlassen kann (statt z.B. alle Datensätze zu laden und dann die benötigten heraus zu suchen), die diese schneller erledigt.
Das über eine Abstraktionsschicht verfügbar zu machen, stelle ich mir schwierig oder sehr aufwändig in der Implementierung vor.

Macht es denn in euren Augen für solche Fälle dann überhaupt Sinn, die Abstraktion vorzusehen? Ich betrachte das gerade vor allem auch vom Performance-Aspekt aus.

LG :)

Menschen irren - Politiker sind Menschen.
Für den Norddeutschen ist 1kW = 2 Pfund Schlick.

Benutzeravatar
dr.e.
Administrator
Beiträge: 4533
Registriert: 04.11.2007, 16:13:53

Re: MySQL-Funktionen mit GenericCriterionObject verwenden

Beitrag von dr.e. » 30.01.2014, 00:03:58

Aus (puristischen) Performance-Gesichtspunkten ist eine Nutzung von SQL sicher einer/jeder Abstraktions-Schicht zu bevorzugen. Allerdings kann es durchaus Sinn machen, einfache und oft wiederkehrende Dinge wie das Nachladen von Beziehungsobjekten zu abstrahieren. Alles zu abstrahieren ist sicher nicht ganz so einfach...
Viele Grüße,
Christian

Gesperrt

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast