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
sleitz opened this Issue May 15, 2018 · 9 comments

Comments

Projects
None yet
3 participants
@sleitz
Copy link

sleitz 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",
    ],

]
@sleitz

This comment has been minimized.

Copy link
Author

sleitz 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

This comment has been minimized.

Copy link
Owner

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).

@sleitz

This comment has been minimized.

Copy link
Author

sleitz 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

This comment has been minimized.

Copy link
Owner

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

This comment has been minimized.

Copy link
Owner

alnv commented Jun 18, 2018

Ich packe es auf die todo liste…

@sleitz

This comment has been minimized.

Copy link
Author

sleitz 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

This comment has been minimized.

Copy link

denniserdmann commented Aug 30, 2018

Moin,

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

@alnv

This comment has been minimized.

Copy link
Owner

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

This comment has been minimized.

Copy link
Owner

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