2016-07-25 5 views
-1

Ich komme aus einem Kohana-Hintergrund und habe ein paar Fragen zu einem Problem gestellt, das ich habe und herausfinden muss, wie man das macht. Ich bin SEHR neu in Symfony und Doctrine und liebe es neue Frameworks zu lernen und Code zu korrigieren. Allerdings finde ich Doctrine ORM frustrierend zu benutzen und trotzdem mächtig.Wie führe ich Code aus, nachdem Symfony3/Doctrine Daten aus meiner Datenbank geladen hat?

Also hier ist mein grundlegendes Problem und ich werde versuchen, kurz zu sein. Ich habe eine products Tabelle und eine products_images Tabelle. Indem ich dem Tutorial für Symfony folge, bin ich bereits in der Lage, Entitäten für beide zu erstellen und die Beziehungen zuzuordnen, Getter und Setter zu generieren, Repositories zu erstellen und das ganze Bit. Aber hier ist, wo es klebrig wird ...

Die product_images Tabelle enthält nur den Namen des Bildes, nicht den Pfad, den ich offensichtlich brauche, wenn ich konstruieren und nützliche href in meinem HTML. Die Produkttabelle wurde mit Produkten bevölkert, indem über das Web gecrawlt wurde und sie auf diese Weise erhalten wurden. Als Voraussetzung für die Personen, die mich ihre Website schreiben, muss ich die Bilder in Verzeichnisse teilen, die darstellen, wo sie gecrawlt wurden . Die Position der Bilder hat sich oft geändert, daher möchte ich den Pfad NICHT in der Datenbank speichern.

Um meine Frage einfach zu halten, was ich irgendwie tun muss, ist eine Logik zu schreiben, die untersucht, wo das Bild gecrawlt wurde und dann eine Pfadzeichenfolge zu meiner Zweigvorlage erstellen und dann anhängen der Bildname ... all, um ein gültiges Bild-Tag oder href zu erstellen.

Mein letzter Versuch, eine Lösung dafür zu finden, war, den Getter für den Image-Namen in der Entity zu modifizieren, aber da ich createQueryBuilder() verwende, um einige DQL auszuführen, scheint es, die Getter werden nicht verwendet und jetzt habe ich nichts weitergehen. Ich kann auf der offiziellen Doctrine-Website keine Dokumentation finden, die mir hilft, dieses Problem zu umgehen, und ich muss nur wissen, wie ich das überwinden kann. Kann jemand helfen?

+2

Lassen Sie uns Lehre für eine Weile überspringen. Wie kannst du * raten * Pfad? Woher weißt du, woher es kommt? –

+1

Ich glaube, Sie fragen, wie Sie Code ausführen, nachdem ein Bild aus der Datenbank geladen wurde? Wenn ja, werfen Sie einen Blick auf das Doktrin-Ereignissystem und insbesondere auf das postLoad-Ereignis. http://doctrine-orm.readthedocs.io/projects/doctrine-orm/de/latest/reference/events.html#postload und http://symfony.com/doc/current/cookbook/doctrine/event_listeners_subscribers.html – Cerad

+0

pogeybait, -1 für nicht "Schreiben eines Titels, der das spezifische Problem zusammenfasst". Weitere Informationen finden Sie unter dem Link [how to ask] (http://stackoverflow.com/help/how-to-ask). Insbesondere wenn Benutzer nach einer ähnlichen Frage suchen, ist es wichtig, den richtigen Titel zu haben. Können Sie Ihren Beitrag bearbeiten und den Titel ändern? Außerdem ist DQL nicht dasselbe wie Query Builder! Können Sie bestätigen, ob Sie [VichUploaderBundle] (http://symfony.com/doc/current/cookbook/controller/upload_file.html) verwenden oder nicht? Vielen Dank! –

Antwort

0

Wenn der Pfad statisch ist, hat die Doktrin nichts mit Ihrem Problem zu tun, Sie können eine Konstante oder einen Parameter verwenden, um sie zu definieren.

dann jsut Sie einen Getter hinzuzufügen haben

getImageWebPath() { 
    return self::PRODUCT_WEB_PATH. $this->getImageName(); 
} 

Wenn das Bild in einem Parameter gespeichert wird Ihnen eine Menge Tools verwenden können: Zweig Funktion wich den Pfad vor Ihrem Bildnamen anhängen, Wich Dienste setzen die Pfad zu Ihrer Entität oder direkt erhalten Zweig Parameter ... usw.

+0

Ich benutze createQueryBuilder(), die mit Reflektion (nicht meine Worte) hydrate so Getter werden nicht verwendet und Fehler in Twig verursachen, wenn ich versuche, etwas anderes als die Felder zu verwenden, die ich in der select() -Klausel ausgewählt habe. – pogeybait

Verwandte Themen