Relação entre Tabelas
Ao criar um componente CRUD no NexoPOS, você pode estabelecer uma relação com tabelas existentes para buscar dados delas simultaneamente.
Num exemplo concreto, se você criar um CRUD para livros, talvez queira atribuir o autor (no nosso caso, a pessoa que fez o registro, e não o autor do livro) ou atribuí-lo a uma categoria. Você pode configurar as várias relações a partir da sua classe CRUD: Inner Join, Left Join ou Right Join. O impacto na exibição depende estritamente do tipo de relação que você escolher.
Junção interna
Neste exemplo, como em qualquer estratégia de inner join em banco de dados, ambos os recursos devem existir para fornecer um resultado. Pode ser conveniente exibir livros que tenham um autor ou uma categoria que realmente exista.
<?php
namespace Modules\YourModule\Crud;
class BookCrud extends CrudService
{
// ....
public $relations = [
[ 'nexopos_users as user', 'mymodule_books.author', '=', 'user.id' ]
];
// ....
}
Aqui, estamos definindo um relacionamento de Inner Join. Vamos atribuir usuários existentes ao autor do livro. Se o usuário não existir (ou tiver sido excluído), o livro não será listado.
JUNÇÃO ESQUERDA
Alternativamente, você pode querer dar prioridade a uma das tabelas. Com o Left Join, a prioridade é dada à tabela definida no lado esquerdo do relacionamento. Isso significa que, se não existir um registro no lado direito, o valor será nulo e ainda assim haverá um resultado.
<?php
namespace Modules\YourModule\Crud;
class BookCrud extends CrudService
{
// ....
public $relations = [
'leftJoin' => [
[ 'nexopos_users as user', 'mymodule_books.author', '=', 'user.id' ]
]
];
// ....
}
Com essa abordagem, criamos uma consulta com LEFT JOIN na tabela de usuários. Se os usuários não existirem, ainda teremos uma entrada para o livro. No entanto, todas as informações do usuário serão definidas como nulas.
Juntar à direita
O método Right Join é o oposto do Left Join. No nosso exemplo, em vez de dar prioridade à tabela de livros, agora vamos dar prioridade à tabela do usuário. Isso significa que, se o livro estiver ausente (ou tiver sido excluído), ainda haverá um registro.
<?php
namespace Modules\YourModule\Crud;
class BookCrud extends CrudService
{
// ....
public $relations = [
'rightJoin' => [
[ 'nexopos_users as user', 'mymodule_books.author', '=', 'user.id' ]
]
];
// ....
}