Search the FirstSpirit Knowledge Base
Hallo zusammen,
habe eine Datenbank-Vorlage, in welches eine header-Funktion 'contentSelect' eingebaut werden soll.
Diese header-Funktion soll eine Liste aller Pressemeldungen ausgeben, welche die id des jeweiligen Datensatzes haben.
Dabei sollen die Pressemeldungen nach dem Datum absteigend sortiert sein.
Das DB-Schema sieht folgendermaßen aus (siehe Anhang):
Es gibt eine Tabelle Company, welches gleichzeitig die Datenbank-Vorlage ist, in welche die header-Funktion reinkommen soll.
Diese referenziert zu der Tabelle Press_Post_Box in einer 1:1-Beziehung.
Die Tabelle Press_Post_Box steht zu der Tabelle Press_Messages in einer 1:n-Beziehung und beinhaltet daher eine Liste aller Pressemeldungen zur jeweiligen Company.
Diese Pressemeldungen sollen in der Datenbank-Vorlage Company nach dem Datum absteigend sortiert ausgegeben werden.
Habe provisorisch mal so eine header-Funktion geschrieben:
<CMS_FUNCTION name="contentSelect" resultname="cs_press_releases">
<CMS_PARAM name="schema" value="messe_karlsruhe" />
<CMS_VALUE_PARAM name='id' value='#row.id' />
<QUERY entityType="Company">
<ORDERCRITERIA attribute="press_Post_Box.press_MessagesList.date_%lang%" descending="1" />
<FILTERPARAM parameter="id" datatype="java.lang.Integer"/>
</QUERY>
</CMS_FUNCTION>
Nur leider lässt sich der Parameter #row.id nicht so auslesen. Es sollen hier alle Pressemeldungen ausgegeben werden, welche die Id der jeweiligen Company haben.
Diese Id wird in der Datenbank-Vorlage mit 'CMS_VALUE(#row.id)' ausgelesen.
Wie muss man so eine header-Funktion schreiben, damit nur die Pressemeldungen ausgegeben werden, die zur jeweiligen Company gehören.
Mit freundlichen Grüßen,
Snadra Stolle
Das hier ist die richtige header-Funktion:
<CMS_FUNCTION name="contentSelect" resultname="cs_press_releases">
<CMS_PARAM name="schema" value="messe_karlsruhe" />
<CMS_VALUE_PARAM name='idCompany' value='#row.getId().toNumber' />
<QUERY entityType="Press_Messages">
<ORDERCRITERIA attribute="date_%lang%" descending="1" />
<FILTERPARAM parameter="idCompany" datatype="java.lang.Integer"/>
<EQ attribute="press_Post_Box.company.fs_id" parameter="idCompany" />
</QUERY>
</CMS_FUNCTION>
Hallo Frau Stolle,
versuchen Sie mal an zwei Schrauben zu drehen:
<CMS_VALUE_PARAM name='id' value='#row.getId()' />
bzw.
<CMS_VALUE_PARAM name='id' value='#row.getId().toNumber' />
und
<FILTERPARAM parameter="id" datatype="java.lang.Long"/>
Funkioniert keine der mögichen Kombinationen?
Was gibt denn $CMS_VALUE(#row.getId().class)$ und $CMS_VALUE(#row.getId().toNumber.class)$ aus?
Viele Grüsse aus Dortmund,
Holger Höbbel
In ihrer Abfrage fehlt auch jeden Fall noch eine Bedingung (also ein EQ-Param o.ä.). Am einfachsten ist es, wenn Sie den Query-Wizard nutzen, dort können Sie sich die richtige Abfrage zusammenklicken.
Das hier ist die richtige header-Funktion:
<CMS_FUNCTION name="contentSelect" resultname="cs_press_releases">
<CMS_PARAM name="schema" value="messe_karlsruhe" />
<CMS_VALUE_PARAM name='idCompany' value='#row.getId().toNumber' />
<QUERY entityType="Press_Messages">
<ORDERCRITERIA attribute="date_%lang%" descending="1" />
<FILTERPARAM parameter="idCompany" datatype="java.lang.Integer"/>
<EQ attribute="press_Post_Box.company.fs_id" parameter="idCompany" />
</QUERY>
</CMS_FUNCTION>