Dépendance des modèles
La dépendance du modèle a été introduite dans NexoPOS 4.7.x, et cela contribue principalement à empêcher la suppression des ressources requise par d’autres modèles. Concrètement, cela signifie qu’avant de supprimer une catégorie, NexoPOS vérifie s’il existe un produit affecté à cette catégorie afin d’éviter la suppression.
Ce guide explique comment la dépendance du modèle fonctionne sur NexoPOS.
Déclaration de dépendance
Cela devrait être fait sur le modèle lui-même. Nous indiquons dans le modèle qu’un autre modèle a une dépendance. Un modèle peut dépendre de nombreux autres modèles. Chaque dépendance doit être clairement définie afin d’éviter toute suppression.
Pour déclarer une dépendance, nous devons déclarer une propriété protégée nommée « isDependencyFor » comme ceci.
<?php
namespace App\Models\Category;
class Category extends NsModel
{
protected $isDependencyFor = [
// dependencies goes here
]
}
Cette propriété accepte comme clé la classe de modèle, qui dépend du modèle actuel et de la configuration comme valeur.
<?php
namespace App\Models\Category;
class Category extends NsModel
{
protected $isDependencyFor = [
Product::class => [
// define configuration
]
];
}
Voici les valeurs prises en charge pour chaque dépendance :
- local_name : Attribut réel à utiliser pour extraire le nom du modèle. Il servira à générer une erreur compréhensible.
- local_index : Il s’agit de l’attribut réel utilisé pour comparer sur les modèles dépendants. En général, la valeur est « id ».
- foreign_name : Attribut de la dépendance trouvée pour récupérer son nom. Cela sera également utilisé pour générer une erreur compréhensible.
- foreign_index : C’est l’attribut qui correspond à l’index local, utilisé pour identifier la dépendance.
Comme notre modèle est « Catégorie », nous avons déclaré qu’il s’agissait d’une dépendance pour « Produit ». Voici la forme finale de notre configuration.
<?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'
]
];
}
En essayant de supprimer, vous obtiendrez l’erreur suivante.
Dans le cas où une dépendance a été trouvée.