borisbaer: PDO: Dynamische Read- und Write-Funktion schreiben

Beitrag lesen

Hallo Felix,

wenn Du ein Model hast, ist das dann nicht eine Repräsentation eines Datenobjektes?

leider mangelt es mir an der Fachsprache, um das wirklich beantworten zu können. Ich weiß nur, dass Model-Klassen allein mit der Datenbank „kommunizieren“ und die Ergebnisse dann an entsprechende Controller-Klasse weitergeben.

Ein entsprechender Aufruf wäre zum Beispiel: $releases = Model::read( 'releases', 'id, value, game', [ 'game' => $page ] );

Also für mich sieht das so aus, als sei ein Release ein Objekt. Dieses darf dann auch „selber wissen“, wie man hierfür die DB genau bespielen muss. Das Release-Objekt „kennt“ dann auch die DB-Struktur und kann darauf maßgeschneiderten SQL-Code generieren.

foreach (Release::get_all() as $r) {
  echo "Game: ", $r->game, PHP_EOL;
  echo "Year: ", $r->date, PHP_EOL;
}

$n = new Release();
$n->game = 'The Witcher 3';
$n->date = '2015-05-18';
$n->save();

Das, was Du mit id sozusagen von Hand notierst, weil Deine read-Methode für „Handbetrieb“ ausgelegt ist, muss die Release-Klasse selbst intern managen. Dafür kennt sie die Tabellenstruktur.

Meine Lösung sieht so aus: Die HTML-Tabelle generiert sich aus Daten einer JSON-Datei und einer Datenbank-Tabelle. In der JSON-Datei stehen dann z.B. „Titel“, „Erscheinungsjahr“ usw. (also statische Werte) und in der Datenbank-Tabelle wird gemanagt, welchen Wert ein bestimmter input zu dem entsprechenden Release-Eintrag hat („habe ich“, „habe ich nicht“, „kein Interesse“). Diese Vorgehensweise macht es für mich nötig, IDs manuell in der JSON-Datei zu vergeben. Womöglich kann man das besser lösen, doch das übersteigt meine aktuellen Kenntnisse.

P.S.: Soweit ich gelesen habe, ist es nicht nötig, filter_input zu verwenden, wenn man mit PDO arbeitet, oder?

Eine Geschichte vom Hörensagen... Hast Du Dich erkundigt, was der Sinn hinter filter_input ist und wofür Du es wirklich(!) benötigst?

Ich werde es mir bei Gelegenheit durchlesen, danke! Habe mich wohl auch übrigens falsch ausgedrückt (siehe hier).