Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Zugriff auf Elemente einer verknüpften Tabelle bei N:M-Beziehungen #127

Closed
ghost opened this issue May 15, 2018 · 9 comments
Closed

Zugriff auf Elemente einer verknüpften Tabelle bei N:M-Beziehungen #127

ghost opened this issue May 15, 2018 · 9 comments
Labels

Comments

@ghost
Copy link

@ghost ghost commented May 15, 2018

Es ist laut Anleitung möglich, im Template auf die ausführlichen Felder verknüpfter Tabellen zuzugreifen.

Das funktioniert soweit gut, wenn es sich bei der Verknüpfung um Felder der Typen "Radio-Buttons", "Auswahl-Menü" etc. funktioniert, die eine 1:N-Beziehung modellieren.

Sobald aber ein "Checkbox-Menü" mit Mehrfachauswahl ins Spiel kommt, versagt die Logik. In der Datenbank werden dann zwar die korrekten Werte (z.B. "7,1") abgelegt, aber im Template besteht nur Zugriff auf den ersten der beiden angegebenen Datensätze.

Vorschlag: Könnte in diesem Fall die Template-Variable ein Array sein? Also statt

array:47 [
    …
    "hauptcatalog_nebencatalogTitle" => "Gummibärchen",
    …
]

lieber so etwas:

array:47 [
    …
    "hauptcatalog_nebencatalogTitle" => array:2 [
        "Gummibärchen",
        "Schokolade",
    ],
    …
]
@ghost
Copy link
Author

@ghost ghost commented May 15, 2018

Ich glaube, da ist sogar noch ein Bug drin. Zumindest in meinem Test-Setup wird ein Eintrag mit zwei verknüpften Datensätzen in der Listenansicht doppelt angezeigt.

@alnv
Copy link
Owner

@alnv alnv commented May 16, 2018

Es werden lediglich alle Datenbank Ergebnisse ausgegeben und bei einer N:M Beziehung kommen Datensätze mehrfach vor. Das Ergebnis ist zwar nicht ganz optimal aber ein Bug ist es nicht.

Eine Lösung wäre alle Datensätze auszulesen und durch eine PHP-Schleife zu jagen und zu verschachteln aber darauf habe ich Bewusst verzichtet ( schlechte Performance, lange Ladezeit und nicht skalierbar).

@ghost
Copy link
Author

@ghost ghost commented May 17, 2018

Der Kunde braucht hierfür eine Lösung. Können wir telefonieren, um das zu besprechen? Kosten würde der Kunde in gewissem Rahmen übernehmen, falls Anpassungen erforderlich sein sollten.

@alnv
Copy link
Owner

@alnv alnv commented May 17, 2018

@sleitz du kannst mir gerne eine E-Mail schreiben: me@alexandernaumov.de

@alnv alnv added the support label May 30, 2018
@alnv alnv added the todo label Jun 18, 2018
@alnv
Copy link
Owner

@alnv alnv commented Jun 18, 2018

Ich packe es auf die todo liste…

@ghost
Copy link
Author

@ghost ghost commented Jun 18, 2018

Der Kunde hat sich leider noch nicht zu einer Kostenfreigabe entschlossen - sie wollen erst einmal den Rest der Website fertigstellen, und es krankt natürlich wie immer an den Inhalten. Ich hoffe aber, das kommt noch.

@denniserdmann
Copy link

@denniserdmann denniserdmann commented Aug 30, 2018

Moin,

ich stehe vor einem ähnlichen Problem. Ich schreibe dir dazu mal eine Mail, @alnv.

@alnv
Copy link
Owner

@alnv alnv commented Sep 3, 2018

Vielen Dank an @denniserdmann für den Support. Eine N:M Verknüpfung wurde implementiert ( ab v1.24 ).

Unter der "Verknüpfungs-Einstellungen" Palette gibt es jetzt eine Checkbox "Mehrfache Verknüpfungen als Array ausgeben."

Siehe:

Im Template werden alle verbundenen Datensätze als Array ausgegeben.

<?php if ( is_array( $this->myField ) && !empty( $this->myField )  ): ?>
<?php foreach ( $this->myField as $arrField ): ?>
   <?= $arrField['myColumn'] ?>
<?php endforeach; ?>
<?php endif; ?>
@alnv
Copy link
Owner

@alnv alnv commented Sep 3, 2018

Lässt sich auch so ausgeben:

<?php 
implode( ', ',  array_map( function( $arrValue ) { return $arrValue['title'] }, $this-> myField ) ) 
?>
@alnv alnv removed the todo label Sep 3, 2018
@alnv alnv closed this Sep 3, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
2 participants