MySQL Datenbanken in ZF2 (ZendFramework 2)

Tag auch und hallo zu einem weiteren Kapitel im Allbytes Azubiblog!

Diese Woche ergaben sich ein paar Probleme im Bereich Umsetzung von SQL-Anweisungen in Zend Framework 2. Bei den benötigten SQL-Anweisungen handelte es sich um für meine Verhältnisse noch recht fortgeschrittene SQL-Statements und die zusätliche Umsetzung des Ganzen in ZF2 macht es nicht leichter. Neben JOIN (Verknüpfung über mehrere Tabellen hinweg) und GROUP BY (Gruppierung von Daten) musste ebenfalls die zuletzt abgespeicherte ID verwendet werden.

In PDO konnte man sich den zuletzt angelegten Primärschlüssel über die Methode „lastInsertValue()“ holen, allerdings funktionierte dies in ZF2 nicht ganz wie geplant.

In Zend Framework 2 wird der zuletzt generierte Primärschlüssel direkt bei der Datenbankverbindung (TableGateway) abgespeichert, das heißt, nachdem der Datenbankeintrag erstellt wurde, kann man über die Funktion „getLastInsertValue()“ auf die zuletzt erstellte ID zugreifen.

$this->tableGateway->getLastInsertValue();

Auch die Verwendung von JOINS oder in der WHERE-Klause befindlichen ANDs und ORs war anders als vermutet.

Für das SQL-Statement:

SELECT tabelle2.name FROM tabelle1 LEFT JOIN tabelle2 ON tabelle1.tabelle2_id tabelle2.id WHERE tabelle1.id=1;

Equivalenter ZF2 Code:

$select = new Zend\Db\Sql\Select();
$select->from('tabelle1');
$select->join('tabelle2', 'tabelle1.tabelle2_id = tabelle2.id', array('name'));
$select->where(array('tabelle1.id' => 1));
$resultSet = $this->tableGateway->selectWith($select);

Für das SQL-Statement:

SELECT * FROM tabelle1 WHERE id=? AND creation_date > ? AND creation_date < ?;

Equivalenter ZF2 Code:

$sqlObject&amp;nbsp;= new Sql($adapter);
$where = new Zend\Db\Sql\Where();
$where->equalTo('id', $id)
->and
->greaterThan('creation_date', $start_date)
->and
->lessThan('creation_date', $end_date);
$select = $sqlObject->select()->columns(['*'])->from('tabelle1')->where($where);
$statement = $sqlObject->prepareStatementForSqlObject($select);
$resultSet = new ResultSet();
$resultSet->initialize($results);

Zum Schluss hab ich glücklicherweise doch noch alles zum Laufen gebracht.

Grüße

Stefan Weiterlesen

Veröffentlicht unter Stefan

MVC anhand Zend Framework 2

Willkommen zu einem weiteren Blogeintrag!

ZendFramework-logo

Diesmal hab ich mich mit einem sog. Framework beschäftigen dürfen, und nicht nur irgendeinem Framework, sondern Zend Framework 2. Es handelt sich dabei um das meistgenutzte Framework für die Webentwicklung und so wird es auch von der Allbytes verwendet. Ein Framework ist eine Art Programm, dass einem die Struktur seines eigentlichen Projekts vorgibt, weshalb es dann deutlich übersichtlicher und leichter zu managen ist.

Das zugrunde liegende Konzept ist das MVC (Model-View-Controller). Eine View ist der Teil, der später auf dem Bildschirm ausgegeben wird, daher ‚view‘, englisch für ’sehen‘. Im Controller befinden sich die nötige Logik und Abfragen, um die Funktion des Projekts zu sichern. Außerdem übergibt der Controller Werte an die View, die diese dann anzeigen lässt. Models sind funktional in sich geschlossen und bieten dem Controller Schnittstellen (z.b. zur Datenbank), die nicht jedes Mal neu definiert werden müssen.

MVC-Diagramm

Dennoch ist Zend Framework 2 sehr kompliziert und vielseitig, weshalb ich lange gebraucht habe, um darin Fuß zu fassen. Es verlangt ein gutes Grundverständnis von Php und objektorientierter Programmierung, was es für mich nicht leichter gemacht hat.

Grüße

Stefan

Veröffentlicht unter Stefan

Woche 3 – Webentwicklung

So sieht man sich wieder!

Diese Woche war es meine Aufgabe, eine ganze Seite einer Kundendomain zu gestalten. Das war für mich besonders spannend, da mein Code, alsbald er in die Live-Version übernommen wurde, von jedem User beim Aufruf der Website gesehen wird. Ein Beweis für meine Tätigkeit bei der Allbytes und Anschauungsmaterial für Familie und Freunde.

Ich durfte den FAQ-Bereich eines namenhaften Kunden bauen, indem ich dynamisch viele Boxen mit den Fragen erzeuge, die bei einem Klick darauf aufklappen und die Antwort auf die jeweilige Frage preisgeben. Außerdem soll nur immer eine Frage ausgeklappt sein können, also müssen, sobald man eine Frage anklickt, alle anderen wieder eingeklappt werden. Als Zeichen der Anerkennung meiner Leistung gab man mir nach getaner Arbeit einen Glückskecks, was hier durchaus Usus ist, um die Arbeitsmoral oben zu halten.

So weit, so gut… Das war das Wichtigste zu dieser Woche, der nächste Eintrag folgt in Kürze.

Grüße

Stefan

Veröffentlicht unter Stefan

CSS Gradient Generator und Einarbeitung in jQuery

Hi again!

In meiner zweiten Woche habe ich hauptsächlich Webseiten gestaltet. Als besonders trickreich erwies sich die Seiten-Navigation sowie die Verwendung einer sich graduell ändernden Farbe, was mir anfangs nicht gelingen wollte.

Jedoch konnte ich mit Hilfe eines CSS Gradient Generators den Farbverlauf dann doch erstellen. Es handelt sich dabei um ein nützliches Tool, welches die Generierung von horizontalen, vertikalen und diagonalem Farbverläufen per Mausklick sehr angenehm ermöglicht. Dabei wird „on the fly“ der dazugehörige CSS Code ausgegeben.

Nachdem der Farbverlauf der Vorlage des Auftraggebers entsprach, durfte ich das erste mal an einer Kundenwebsite arbeiten und diesen Farbverlauf dann so einbauen.

Des Weiteren habe ich mich diese Woche in die JavaScript Bibliothek „jQuery“ eingelesen und eingearbeitet. Mit Hilfe von jQuery kann man einfacher auf bestimmte Elemente im HTML zugreifen und diese bearbeiten, entfernen oder Aktionen vom Nutzer abfragen.

Mit Hilfe von jQuery können große JavaScript Bereiche, beispielsweise das hinzufügen einer Klasse zu einem Dom-Element oder das versenden von Ajax-Requests, mit sehr wenig Code realisiert werden.

Grüße

Stefan

Veröffentlicht unter Stefan

Vorstellung – Stefan

Hallo zusammen!

Ich bin Stefan und in diesem Azubiblog will ich aufzeigen, wie ich zu meiner Ausbildung bei der Firma Allbytes kam, sowie Updates zu dieser posten.

Nach meinem einjährigen Berufsfachschulaufenthalt für Informatik war für mich der Entschluss gefasst, auch beruflich in diese Branche einsteigen zu wollen. Folglich verschickte ich Bewerbungen an viele Firmen aus der Gegend und wurde hin und  wieder zu einem Vorstellungsgespräch eingeladen. Allbytes fiel mir sofort als sehr einladend und freundlich auf.

Ich wurde zu einem Praktikum eingeladen und man wollte, dass ich einen Einstellungstest für Fachinformatiker der Anwendungsentwicklung ausfülle, was mir das Gefühl gab, man traue mir einiges zu. Da der Test nicht für Auszubildende vorgesehen war, hätte auch ein schlechteres Ergebnis nicht sofort eine Absage bedeutet.

Während meiner Praktikumswoche wurde der positive Eindruck nur noch verstärkt; ich wurde zweimal zum Essen eingeladen und Freitags gibt es sowieso immer Weisswurstfrühstück. Außerdem sind die Kollegen sehr nett und steile Hierarchien wie auch drakonische Vorschriften gibt es nicht.

Das solls vorerst gewesen sein, eine Zusammenfassung der ersten Lehrwoche folgt in baldiger Zukunft.

Grüße

Stefan

Veröffentlicht unter Stefan