Tabellenbeziehung
Wenn Sie eine CRUD-Komponente in NexoPOS erstellen, können Sie eine Beziehung zu vorhandenen Tabellen herstellen, um gleichzeitig Daten aus diesen abzurufen.
In einem konkreten Beispiel: Wenn Sie ein CRUD für Bücher erstellen, möchten Sie möglicherweise dem Autor (in unserem Fall die Person, die den Eintrag erstellt hat, nicht der Buchautor) zuweisen oder es einer Kategorie zuordnen. Sie können die verschiedenen Beziehungen aus Ihrer CRUD-Klasse konfigurieren: Inner Join, Left Join oder Right Join. Die Auswirkungen auf die Anzeige hängen ausschließlich von dem von Ihnen gewählten Beziehungstyp ab.
INNER JOIN
In diesem Beispiel müssen, wie bei jeder Datenbank-Inner-Join-Strategie, beide Ressourcen vorhanden sein, um ein Ergebnis zu liefern. Es kann praktisch sein, Bücher anzuzeigen, die tatsächlich einen Autor oder eine Kategorie haben.
<?php
namespace Modules\YourModule\Crud;
class BookCrud extends CrudService
{
// ....
public $relations = [
[ 'nexopos_users as user', 'mymodule_books.author', '=', 'user.id' ]
];
// ....
}
Hier definieren wir eine Beziehung vom Typ „Inner Join“. Wir weisen vorhandene Benutzer dem Buchautor zu. Wenn der Benutzer nicht existiert (oder gelöscht wurde), wird das Buch nicht aufgeführt.
Linksverknüpfung
Alternativ möchten Sie möglicherweise einer der beiden Tabellen Priorität geben. Bei einem Left Join wird die Priorität der Tabelle zugewiesen, die im linken Teil der Beziehung steht. Das bedeutet: Wenn der Eintrag auf der rechten Seite nicht existiert, ist der Wert null, und es wird trotzdem ein Ergebnis ausgegeben.
<?php
namespace Modules\YourModule\Crud;
class BookCrud extends CrudService
{
// ....
public $relations = [
'leftJoin' => [
[ 'nexopos_users as user', 'mymodule_books.author', '=', 'user.id' ]
]
];
// ....
}
Mit diesem Ansatz haben wir eine Left-Join-Abfrage auf der Benutzertabelle erstellt. Wenn die Benutzer nicht existieren, gibt es dennoch einen Eintrag für das Buch. Allerdings werden alle Benutzerdaten auf „null“ gesetzt.
Rechtsverknüpfung
Die Right-Join-Methode ist das Gegenteil der Left-Join-Methode. In unserem Beispiel geben wir statt der Büchertabelle nun der Benutzertabelle den Vorrang. Das bedeutet, dass auch dann noch ein Eintrag vorhanden ist, wenn das Buch fehlt (oder gelöscht wurde).
<?php
namespace Modules\YourModule\Crud;
class BookCrud extends CrudService
{
// ....
public $relations = [
'rightJoin' => [
[ 'nexopos_users as user', 'mymodule_books.author', '=', 'user.id' ]
]
];
// ....
}