WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

You are not logged in.

#1 12.05.2020 15:01:11

wb_user82
Member

Datenbankzugriff abstrahieren

Hallo allerseits,

ich habe mal eine Frage: Früher habe ich mit Django regelmäßig kleinere (ziemlich triviale) Projekte realisiert. Da ist es ja so, dass man niemals direkt auf die Datenbank mittels SQL-Abfragen zugreift, sondern alles über Klassen abstrahiert und gekapselt wird.
Gibt es für die Entwicklung von WBCE Modulen auch eine vergleichbare Möglickeit? Bzw., wie geht ihr beim Entwickeln von Modulen vor? Führt ihr jedes mal von Hand die SQL-Abfrage aus oder bindet ihr evtl. ein externes Framework ein, welches sich um die (sichere) Abfrage kümmert? Würde mich über Tipps sehr freuen smile

Vielen Dank schon mal!

Last edited by wb_user82 (12.05.2020 15:02:27)

Offline

#2 12.05.2020 15:20:40

florian
Administrator

Re: Datenbankzugriff abstrahieren

WBCE hat die class.database, siehe
https://github.com/WBCE/WBCE_CMS/blob/1 … tabase.php

Die Queries sehen dann z.B. so aus
https://github.com/WBCE/onebyone/blob/6 … dd.php#L24

Ein Abstraction Layer wird in einer zukünftigen WBCE-Version eingeführt werden.

Offline

#3 12.05.2020 15:50:22

wb_user82
Member

Re: Datenbankzugriff abstrahieren

Danke für die schnelle Antwort! Also führt bei WBCE erst mal kein Weg an der SQL-Abfrage dabei, oder kann man auf externe Frameworks zugreifen und diese mit der class.database verbinden?

Offline

#4 12.05.2020 15:59:26

florian
Administrator

Re: Datenbankzugriff abstrahieren

Das kann ich Dir nicht beantworten, da ich es nicht weiß.

Offline

#5 13.05.2020 08:57:27

webbird
Administrator

Re: Datenbankzugriff abstrahieren

Du kannst auch ein Framework benutzen und Dir die Datenbank-Zugangsdaten aus der config.php holen. Ist aber ziemlich aufwendig.


Ich habe eine Amazon-Wishlist. wink
Erfolgreich vom eigentlichen Problem ablenken kann auch eine Lösung sein.

Offline

#6 13.05.2020 09:14:23

webbird
Administrator

Re: Datenbankzugriff abstrahieren

wb_user82 wrote:

Da ist es ja so, dass man niemals direkt auf die Datenbank mittels SQL-Abfragen zugreift, sondern alles über Klassen abstrahiert und gekapselt wird.

Das klingt nach einer Art ORM (Object Relational Mapping). Das ist für WBCE derzeit nicht geplant, weil das eine so grundlegende Umstellung wäre, dass es einfach nicht mehr WBCE wäre. Es müßte wirklich ALLES neu programmiert werden.

Ich vermute mal, Hintergrund Deiner Frage ist, dass Du Dich mit SQL nicht so auskennst? Ich habe mit der wblib mal eine eigene Datenbankklasse gebaut und benutzt, die das "ein wenig" abstrahiert, aber letztlich mußt Du auch damit immer noch wissen, wie das SQL so ungefähr aussehen würde.

Beispiel:

$data = $this->db()->search(
                array(
                    'tables' => 'pages',
                    'fields' => 'menu_title',
                    'where'  => 'page_id == ?',
                    'params' => array( $num )
                )
            );

Oder ein wenig komplexer:

$data    = $this->db->search(array(
                'fields' => 't1.page_id, t2.menu_title',
                'tables' => array(
                    'sections',
                    'pages'
                ),
                'join' => 't1.page_id=t2.page_id',
                'where' => 't1.module == ?',
                'params' => array(
                    'bookings_v2'
                )
            ));

Ich weiß nicht, ob das zu dem paßt, was Du suchst, aber ich vermute, eher nicht.


Ich habe eine Amazon-Wishlist. wink
Erfolgreich vom eigentlichen Problem ablenken kann auch eine Lösung sein.

Offline

#7 14.05.2020 14:04:10

wb_user82
Member

Re: Datenbankzugriff abstrahieren

Hallo Webbird,

vielen Dank für deine Antwort!

Webbird wrote:

Das klingt nach einer Art ORM (Object Relational Mapping). Das ist für WBCE derzeit nicht geplant, weil das eine so grundlegende Umstellung wäre, dass es einfach nicht mehr WBCE wäre. Es müßte wirklich ALLES neu programmiert werden.

Okay, danke für die Auskunft.

Webbird wrote:

Ich vermute mal, Hintergrund Deiner Frage ist, dass Du Dich mit SQL nicht so auskennst?

Jein smile Ich habe früher im Rahmen meines Studiums recht viel mit SQL gemacht, später Django entdeckt und mittlerweile vieles wieder vergessen. Aber das ist kein Problem, dann muss ich halt in den sauren Apfel beißen wink

Webbird wrote:

Ich habe mit der wblib mal eine eigene Datenbankklasse gebaut und benutzt, die das "ein wenig" abstrahiert, aber letztlich mußt Du auch damit immer noch wissen, wie das SQL so ungefähr aussehen würde.

Super, danke für den Hinweis!

Offline

#8 14.05.2020 14:11:45

webbird
Administrator

Re: Datenbankzugriff abstrahieren

Wenn / falls WBCE auf Doctrine DBAL umgestellt wird, kannst Du den QueryBuilder benutzen. Das *kann* helfen, macht den Code für Laien aber schwerer lesbar. wink


Ich habe eine Amazon-Wishlist. wink
Erfolgreich vom eigentlichen Problem ablenken kann auch eine Lösung sein.

Offline

Board footer

Powered by FluxBB

up