Startseite
NexoPOS

Modelabhängigkeit

Die Abhängigkeit des Modells wurde in NexoPOS 4.7.x eingeführt, und das trägt vor allem dazu bei, das Löschen von Ressourcen zu verhindern, das von anderen Modellen benötigt wird. Technisch bedeutet das: Bevor eine Kategorie gelöscht wird, prüft NexoPOS, ob einem Produkt diese Kategorie zugewiesen ist, um das Löschen zu verhindern.

Dieser Leitfaden erklärt, wie die Modellabhängigkeit auf NexoPOS funktioniert.

Abhängigkeitserklärung

Dies sollte direkt nach dem Modell erstellt werden. Wir geben im Modell an, dass ein anderes Modell eine Abhängigkeit hat. Ein Modell kann von vielen anderen Modellen abhängig sein. Jede Abhängigkeit sollte eindeutig definiert werden, um eine Löschung zu verhindern.

Um eine Abhängigkeit zu deklarieren, müssen wir eine geschützte Eigenschaft namens „isDependencyFor“ wie folgt deklarieren.


<?php
namespace App\Models\Category;


class Category extends NsModel
{
    protected $isDependencyFor  = [
        // dependencies goes here
    ]
}

Diese Eigenschaft akzeptiert als Schlüssel die Modellklasse, die als Wert vom aktuellen Modell und der Konfiguration abhängt.

<?php
namespace App\Models\Category;


class Category extends NsModel
{
    protected $isDependencyFor  = [
        Product::class  =>  [
            // define configuration
        ]
    ];
}

Hier sind die unterstützten Werte für jede Abhängigkeit:

  • local_name: Tatsächliches Attribut, aus dem der Modellname gezogen wird. Das wird verwendet, um eine verständliche Fehlermeldung auszugeben.
  • local_index: Das tatsächliche Attribut, das zum Vergleich in abhängigen Modellen verwendet wird. Üblicherweise ist der Wert „id“.
  • foreign_name: Attribut der gefundenen Abhängigkeit, um ihren Namen abzurufen. Das wird auch verwendet, um eine verständliche Fehlermeldung auszugeben.
  • foreign_index: Das ist das Attribut, das mit dem lokalen Index übereinstimmt und zur Identifizierung der Abhängigkeit verwendet wird.

Da unser Modell „Kategorie“ ist, haben wir festgelegt, dass dies eine Abhängigkeit für „Produkt“ ist. Hier ist die endgültige Form unserer Konfiguration.

<?php
namespace App\Models\Category;


class Category extends NsModel
{
    protected $isDependencyFor  = [
        Product::class  =>  [
            'local_name'  =>  'name',
            'local_index' =>  'id',
            'foreign_name'  =>  'name',
            'foreign_index' =>  'category_id'
        ]
    ];
}

Wenn Sie versuchen, zu löschen, erhalten Sie am Ende die folgende Fehlermeldung.

Falls eine Abhängigkeit gefunden wurde.