Início
NexoPOS

Dependência de Modelos

A dependência do modelo foi introduzida no NexoPOS 4.7.x, e isso principalmente ajuda a evitar a exclusão de recursos que é necessária para outros modelos. Tecnicamente, isso significa que, antes de excluir uma categoria, o NexoPOS verificará se há um produto atribuído a essa categoria para evitar a exclusão.

Este guia explica como funciona a dependência do modelo no NexoPOS.

Declarando Dependência

Isso deve ser feito no próprio modelo. Declaramos no modelo que outro modelo tem uma dependência. Um modelo pode depender de muitos outros modelos. Cada dependência deve ser claramente definida para evitar exclusões.

Para declarar uma dependência, precisamos declarar uma propriedade protegida chamada "isDependencyFor" assim.


<?php
namespace App\Models\Category;


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

Essa propriedade aceita como chave a classe do modelo, que depende do modelo atual e da configuração como valor.

<?php
namespace App\Models\Category;


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

Aqui estão os valores suportados para cada dependência:

  • local_name: Atributo real para extrair o nome do modelo. Isso será usado para lançar um erro compreensível.
  • local_index: É o atributo real que é usado para comparar em modelos dependentes. Normalmente, o valor é “id”.
  • foreign_name: Atributo da dependência encontrada para obter o nome. Isso também será usado para gerar um erro compreensível.
  • foreign_index: Esse é o atributo que corresponde ao índice local, usado para identificar a dependência.

Como nosso modelo é “Category”, declaramos que ele é uma dependência de “Product”. Aqui está a forma final da nossa configuração.

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

Ao tentar excluir, você acabará com o seguinte erro.

Caso tenha sido encontrada uma dependência.