View der mir eine LIKE Abfrage in WHERE-Klausel erstellt
am 22.07.2008 - 15:04 Uhr in
Hallo Drupaler,
ich habe folgendes Problem:
Um eine n-n-Beziehung zwischen Nodes auszudrücken (Personen können Publikationen schreiben und eine Publikation kann von mehreren Personen geschrieben worden sein habe ich in der Node vom Typ Publikation ein Feld eingerichtet, in dem ich komma-separiert einen Referenzwert (Nachname der Personen) speichere. Diese Personen arbeiten nicht mit dem CMS. Es geht ledidiglich darum die Informationen im CMS abzubilden.
Nun benötige ich einen View, der mir über diesen Referenzwert zu einem gegebenen Nachnamen (Bspw. 'Mustermann') die zugehörigen Publikationen ausliest und anzeigt:
Das Problem ist nun Folgendes: Ich übergebe den Nachname 'Mustermann' als Argument an den View. Dieser vergleicht das Referenzfeld mit dem Argument und liefert mir die Publikationen wo Referenzfeldwert = Argumentwert.
Und genau dort ist der Hund begraben: Ich speichere ja im Referenzfeld im Ausnahmefall mehrere Nachnamen Komma-separiert. Wie kriege ich es also hin das SQL des Views so abzuändern, dass er die WHERE-Bedinunng nicht mit
... WHERE Argumentwert (Bspw. 'Mustermann') = Referenzfeld (Bspw. 'Mustermann,Müller,Schmidt)
sondern mit
... WHERE Argumentwert (Bspw. Mustermann) LIKE '%Referenzfeld%' (Bspw. '%Mustermann,Müller,Schmidt%');
baut?
Problem besteht darin, dass das Views-Modul eine Abfrage immer als '= Bedingung' in die WHERE-Klausel setzt. Was ich bräuchte wäre eine LIKE-Klausel...
In diesem Fall würde mir auch dieser Satz angezeigt.
Irgendwer eine Idee? Alternativ bin ich auch über andere Möglichkeiten der Verknüpfung der beiden Node-Typen interessiert. Eine Speicherung einer Node-Referenz funktioniert nicht, da dies an dem Kriterium der Mehrsprachigkeit scheitert (Daten zu Publikationen sind einsprachig und Daten zu Personen müssen mehrsprachig abgelegt werden. Somit ergeben sich unterschiedliche Node-Ids für Personen bei unterschiedlichen Sprachen. Der Publikatin kann ich aber immer nur die Personen der gerade eingestellten Sprache zuweisen. Ausserdem finde ich diese mehrfache Speicherung ein und derselben Personen zu einer Publikation (unter anderer NodeId) immer etwas widersprüchlich... na ja, längeres Thema...). Also NodeId geht aus meiner Sicht nicht...
Vielleicht hat ja trotzdem jemand eine Idee?
Gruß
Marcel
- Anmelden oder Registrieren um Kommentare zu schreiben
Na klar geht das ganze gut,
am 28.07.2008 - 00:40 Uhr
Na klar geht das ganze gut, blos mit was einem Aufwand ^^
Es gibt den Hook hook_views_query_alter(&$view, &$query)
Damit kann man die Query direkt verändern, damit könntest du ein Like einbauen
Weiterhin viel Spaß mit der Funktion
Gute Nacht
--------------
Blog www.freeblogger.org: Deutscher IRC-Channel: irc.freenode.net #drupal.de ... Jabber-me: dwehner@im.calug.deXING