Home
NexoPOS

Dipendenza dai modelli

La dipendenza del modello è stata introdotta in NexoPOS 4.7.x e ciò aiuta principalmente a prevenire l’eliminazione delle risorse necessaria per altri modelli. Tecnicamente, ciò significa che prima di eliminare una categoria, NexoPOS verificherà se a quella categoria è assegnato un prodotto per impedire l’eliminazione.

Questa guida spiega come funziona la dipendenza del modello su NexoPOS.

Dichiarazione di dipendenza

Questo dovrebbe essere creato direttamente sul modello. Nel modello indichiamo che un altro modello ha una dipendenza. Un modello potrebbe dipendere da molti altri modelli. Ogni dipendenza deve essere definita in modo chiaro per evitare l’eliminazione.

Per dichiarare una dipendenza, dobbiamo dichiarare una proprietà protetta chiamata "isDependencyFor" come questa.


<?php
namespace App\Models\Category;


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

Questa proprietà accetta come chiave la classe del modello, che dipende dal modello corrente e dalla configurazione, come valore.

<?php
namespace App\Models\Category;


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

Ecco i valori supportati per ciascuna dipendenza:

  • local_name: Attributo effettivo da cui estrarre il nome del modello. Verrà utilizzato per generare un errore comprensibile.
  • local_index: È l’attributo effettivo utilizzato per confrontare i modelli dipendenti. Di solito il valore è “id”.
  • foreign_name: Attribut der gefundenen Abhängigkeit, um ihren Namen abzurufen. Dies wird auch verwendet, um eine verständliche Fehlermeldung auszugeben.
  • foreign_index: Questo è l’attributo che corrisponde all’indice locale, usato per identificare la dipendenza.

Poiché il nostro modello è “Categoria”, abbiamo dichiarato che questa è una dipendenza per “Prodotto”. Ecco la forma finale della nostra configurazione.

<?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'
        ]
    ];
}

Quando si tenta di eliminare, si verificherà il seguente errore.

Nel caso in cui sia stata trovata una dipendenza.