WBCE CMS – Way Better Content Editing.
You are not logged in.
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
Vielen Dank schon mal!
Last edited by wb_user82 (12.05.2020 14:02:27)
Offline
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.
Online
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
Das kann ich Dir nicht beantworten, da ich es nicht weiß.
Online
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.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal
Offline
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.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal
Offline
Hallo Webbird,
vielen Dank für deine Antwort!
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.
Ich vermute mal, Hintergrund Deiner Frage ist, dass Du Dich mit SQL nicht so auskennst?
Jein 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
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
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.
Ich habe eine Amazon-Wishlist.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal
Offline