Laravel: Criando o arquivo de Migration – Reiniciando

Aqui eu detalho a lista de tabelas e suas funções no sistema, que serão utilizadas no nosso projeto. O SQL desse projeto encontra-se no arquivo ‘banco_de_dados.sql’ que está na raiz do projeto, porém não será necessário utilizá-lo, pois vamos aprender a usar o recurso de migração do Laravel através de comandos Artisan.

Tabelas de cadastros:

  • account_plans (registros de planos de contas)
    • id (primary key, auto_increment)
    • parameters_id (vínculo com a tabela de perfis)
    • classification (Ex: 1.22.19.2)
    • title (Ex: Receitas, Despesas, Matéria-Prima, Uso e Consumo)
    • plangroup (id do registro pai)
    • username (usuário que modificou o registro)
    • status (ativo, inativo)
    • recipeexpense (‘R’ ou ‘E’)
  • banks (registros de bancos)
    • id (primary key, auto_increment)
    • parameters_id (vínculo com a tabela de perfis)
    • title (nome do banco)
    • bank (nome do banco: Bradesco, Caixa, Banco do Brasil, Itaú)
    • agency (número da agência)
    • account (número da conta)
    • account_type (tipo da conta: corrente, poupança, aplicação, salário)
    • bank_number (código do banco: 237, 104, 001, 341)
    • check_emitter (emite cheques?)
    • username (usuário que modificou o registro)
    • status (ativo, inativo)
  • boxes (registro de caixas/carteiras)
    • id (primary key, auto_increment)
    • parameters_id (vínculo com a tabela de perfis)
    • title (nome do caixa/carteira)
    • username (usuário que modificou o registro)
    • status (ativo, inativo)
  • cards (registro de cartões de crédito)
    • id (primary key, auto_increment)
    • parameters_id (vínculo com a tabela de perfis)
    • bill_day (dia de vencimento da fatura)
    • title (nome do cartão)
    • brand (Ex: Mastercard, Visa, Hiper, Dinners Club, etc)
    • best_after (melhor dia de compra)
    • limit
    • username (usuário que modificou o registro)
    • status (ativo, inativo)
  • costs (registro de centros de custos/categorias)
    • id (primary key, auto_increment)
    • parameters_id (vínculo com a tabela de perfis)
    • title (nome do centro de custos/categoria. Ex: Reforma da casa, transportes, alimentação, etc)
    • username (usuário que modificou o registro)
    • status (ativo, inativo)
  • customers (registros de clientes)
    • id (primary key, auto_increment)
    • parameters_id (vínculo com a tabela de perfis)
    • type (F: pessoa física, J: pessoa jurídica)
    • title (nome do cliente)
    • razao_social
    • cpfcnpj
    • ie (número da inscrição estadual)
    • im (número da inscrição municipal)
    • bank (dados bancários: banco)
    • agency (dados bancários: agência)
    • account (dados bancários: conta)
    • address
    • neighborhood
    • cep
    • city
    • state
    • phone1
    • phone2
    • phone3
    • phone4
    • email
    • obs
    • username (usuário que modificou o registro)
    • status (ativo, inativo)
  • document_types (registros de tipos de documentos)
    • id (primary key, auto_increment)
    • parameters_id (vínculo com a tabela de perfis)
    • title (nome do tipo de documentos. Ex: : dinheiro, cheque, cartão, promissória, recibo, etc)
    • vinculapgto (permite vincular pagamentos? Ex: faturas, duplicatas, boletos)
    • duplicadoc (permite duplicar o document_number do movimento)
    • username (usuário que modificou o registro)
    • status (ativo, inativo)
  • event_types (registro de tipos de eventos)
    • id (primary key, auto_increment)
    • parameters_id (vínculo com a tabela de perfis)
    • title (nome do tipo de eventos. Ex: débito em conta, crédito em conta, depósito, transferência, estorno, etc)
    • username (usuário que modificou o registro)
    • status (ativo, inativo)
  • providers (registros de fornecedores)
    • id (primary key, auto_increment)
    • parameters_id (vínculo com a tabela de perfis)
    • type (F: pessoa física, J: pessoa jurídica)
    • title (nome do fornecedor)
    • razao_social
    • cpfcnpj
    • ie (número da inscrição estadual)
    • im (número da inscrição municipal)
    • bank (dados bancários: banco)
    • agency (dados bancários: agência)
    • account (dados bancários: conta)
    • address
    • neighborhood
    • cep
    • city
    • state
    • phone1
    • phone2
    • phone3
    • phone4
    • email
    • obs
    • username (usuário que modificou o registro)
    • status (ativo, inativo)

Tabelas de movimentos:

  • movements (registro de movimentos financeiros de contas a pagar/pagas e/ou contas a receber/recebidas)
    • id (primary key, auto_increment)
    • parameters_id (vínculo com a tabela de perfis)
    • banks_id (vínculo com a tabela de bancos)
    • boxes_id (vínculo com a tabela de caixas/carteiras)
    • cards_id (vínculo com a tabela de cartões)
    • plannings_id (vínculo com a tabela de planejamentos e metas)
    • costs_id (vínculo com a tabela de centros de custos/categorias)
    • event_types_id (vínculo com a tabela de tipos de eventos)
    • providers_id (vínculo com a tabela de fornecedores)
    • customers_id (vínculo com a tabela de clientes)
    • document_types_id (vínculo com a tabela de tipos de documentos)
    • account_plans_id (vínculo com a tabela de planos de contas)
    • order_number (número de ordem interna)
    • document_number (número de documento interno)
    • recipeexpense (‘R’ ou ‘E’)
    • date (data do registro)
    • bill_date (data de vencimento do registro)
    • value (valor do registro)
    • date_consolidation (data da baixa do registro)
    • value_consolidation (valor da baixa do registro)
    • title (nome do registro)
    • contabil (‘S’ ou ‘N’. Controla se o pagamento irá movimentar o saldo do banco/caixa/carteira na baixa)
    • user_consolidation (usuário que fez a baixa do registro)
    • obs (observações do registro)
    • username (usuário que modificou o registro)
    • status (A: aberto, B: baixado, C: cancelado, G: agrupado, V: vinculado, O: baixa parcial, P: parcial)
  • movement_banks (registro de movimentos financeiros de banco)
    • id (primary key, auto_increment)
    • parameters_id (vínculo com a tabela de perfis)
    • banks_id (vínculo com a tabela de bancos)
    • costs_id (vínculo com a tabela de centros de custos/categorias)
    • document_types_id (vínculo com a tabela de tipos de documentos)
    • event_types_id (vínculo com a tabela de tipos de eventos)
    • moviment_checks_id (vínculo com a tabela de movimentos de cheques)
    • transfers_id (vínculo com a tabela de transferências)
    • movements_id (vínculo com a tabela de movimentos)
    • providers_id (vínculo com a tabela de fornecedores)
    • customers_id (vínculo com a tabela de clientes)
    • account_plans_id (vínculo com a tabela de planos de contas)
    • order_number (número de ordem interna)
    • document_number (número de documento interno)
    • recipeexpense (‘R’ ou ‘E’)
    • date (data do registro)
    • bill_date (data de vencimento do registro)
    • value (valor do registro)
    • date_consolidation (data da baixa do registro)
    • value_consolidation (valor da baixa do registro)
    • title (nome do registro)
    • contabil (‘S’ ou ‘N’. Controla se o pagamento irá movimentar o saldo do banco)
    • obs (observações do registro)
    • username (usuário que modificou o registro)
    • status (A: aberto, B: baixado, C: cancelado)
  • movement_boxes (registro de movimentos financeiros de caixa/carteira)
    • id (primary key, auto_increment)
    • parameters_id (vínculo com a tabela de perfis)
    • boxes_id (vínculo com a tabela de caixas/carteiras)
    • costs_id (vínculo com a tabela de centros de custos/categorias)
    • document_types_id (vínculo com a tabela de tipos de documentos)
    • event_types_id (vínculo com a tabela de tipos de eventos)
    • movement_checks_id (vínculo com a tabela de movimentos de cheques)
    • transfers_id (vínculo com a tabela de transferências)
    • movements_id (vínculo com a tabela de movimentos)
    • account_plans_id (vínculo com a tabela de planos de contas)
    • customers_id (vínculo com a tabela de clientes)
    • providers_id (vínculo com a tabela de fornecedores)
    • order_number (número de ordem interna)
    • document_number (número de documento interno)
    • recipeexpense (‘R’ ou ‘E’)
    • date (data do registro)
    • bill_date (data de vencimento do registro)
    • value (valor do registro)
    • date_consolidation (data da baixa do registro)
    • value_consolidation (valor da baixa do registro)
    • title (nome do registro)
    • contabil (‘S’ ou ‘N’. Controla se o pagamento irá movimentar o saldo do banco)
    • obs (observações do registro)
    • username (usuário que modificou o registro)
    • status (A: aberto, B: baixado, C: cancelado, O: baixa parcial, P: parcial)
  • movement_cards (registro de movimento financeiro de cartão)
    • id (primary key, auto_increment)
    • parameters_id (vínculo com a tabela de perfis)
    • cards_id (vínculo com a tabela de cartões)
    • movements_id (vínculo com a tabela de movimentos)
    • banks_id (vínculo com a tabela de bancos)
    • boxes_id (vínculo com a tabela de caixas/carteiras)
    • document_types_id (vínculo com a tabela de tipos de documentos)
    • event_types_id (vínculo com a tabela de tipos de eventos)
    • account_plans_id (vínculo com a tabela de planos de contas)
    • costs_id (vínculo com a tabela de centros de custos/categorias)
    • customers_id (vínculo com a tabela de clientes)
    • providers_id (vínculo com a tabela de fornecedores)
    • order_number (número de ordem interna)
    • document_number (número de documento interno)
    • bill_date (data de vencimento do registro)
    • title (nome do registro)
    • recipeexpense (‘R’ ou ‘E’)
    • date (data do registro)
    • value (valor do registro)
    • date_consolidation (data da baixa do registro)
    • value_consolidation (valor da baixa do registro)
    • contabil (‘S’ ou ‘N’. Controla se o pagamento irá movimentar o saldo do banco)
    • obs (observações do registro)
    • username (usuário que modificou o registro)
    • status (A: aberto, B: baixado, C: cancelado)
  • movement_checks (registro de movimento financeiro de cheque)
    • id (primary key, auto_increment)
    • parameters_id (vínculo com a tabela de perfis)
    • banks_id (vínculo com a tabela de bancos)
    • boxes_id (vínculo com a tabela de caixas/carteiras)
    • costs_id (vínculo com a tabela de centros de custos/categorias)
    • event_types_id (vínculo com a tabela de tipos de eventos)
    • providers_id (vínculo com a tabela de fornecedores)
    • account_plans_id (vínculo com a tabela de planos de contas)
    • movements_id (vínculo com a tabela de movimentos)
    • transfers_id (vínculo com a tabela de transferências)
    • order_number (número de ordem interna)
    • document_number (número de documento interno)
    • box_provider (C: caixa, F: fornecedor)
    • check_number (número do cheque)
    • check_name (nome no qual o cheque foi emitido)
    • check_date (data de emissão do cheque)
    • date (data do registro)
    • value (valor do registro)
    • title (nome do registro)
    • contabil (‘S’ ou ‘N’. Controla se o pagamento irá movimentar o saldo do banco)
    • obs (observações do registro)
    • username (usuário que modificou o registro)
    • status (A: aberto, B: baixado, C: cancelado, O: baixa parcial, P: parcial)
  • plannings (registros de planejamentos e metas)
    • id (primary key, auto_increment)
    • parameters_id (vínculo com a tabela de perfis)
    • account_plans_id (vínculo com a tabela de planos de contas)
    • costs_id (vínculo com a tabela de centros de custos/categorias)
    • order_number (número de ordem interna)
    • document_number (número de documento interno)
    • recipeexpense (‘R’ ou ‘E’)
    • customers_id (vínculo com a tabela de clientes)
    • providers_id (vínculo com a tabela de fornecedores)
    • date (data do registro)
    • bill_date (data de vencimento do registro)
    • title (nome do registro)
    • value (valor do registro)
    • parcels (número de parcelas que serão geradas nos movimentos de contas a pagar/receber)
    • obs (observações do registro)
    • username (usuário que modificou o registro)
    • status (A: aberto, B: finalizado, C: cancelado)
  • transfers (registros de transferências entre bancos e/ou caixas)
    • id (primary key, auto_increment)
    • parameters_id (vínculo com a tabela de perfis)
    • banks_id (vínculo com a tabela de bancos)
    • boxes_id (vínculo com a tabela de caixas/carteiras)
    • costs_id (vínculo com a tabela de centros de custos/categorias)
    • account_plans_id (vínculo com a tabela de planos de contas)
    • document_types_id (vínculo com a tabela de tipos de documentos)
    • event_types_id (vínculo com a tabela de tipos de eventos)
    • banks_dest (vínculo com a tabela de bancos de destino)
    • boxes_dest (vínculo com a tabela de caixas/carteiras de destino)
    • costs_dest (vínculo com a tabela de centros de custos/categorias de destino)
    • account_plans_dest (vínculo com a tabela de planos de contas de destino)
    • order_number (número de ordem interna)
    • document_number (número de documento interno)
    • radio_source (banco, caixa/carteira)
    • radio_destination (banco, caixa/carteira)
    • date_consolidation (data da baixa do registro)
    • value_consolidation (valor da baixa do registro)
    • title (nome do registro)
    • check_numberr (número do cheque)
    • check_name (nome no qual o cheque foi emitido)
    • check_date (data de emissão do cheque)
    • contabil (‘S’ ou ‘N’. Controla se o pagamento irá movimentar o saldo do banco)
    • obs (observações do registro)
    • username (usuário que modificou o registro)
    • status (A: aberto, B: baixado, C: cancelado)

Tabelas de relacionamentos:

  • movements_movement_cards (vínculo dos movimentos de contas a pagar/receber com a tabela de movimentos de cartões)
    • id (primary key, auto_increment)
    • parameters_id (vínculo com a tabela de perfis)
    • cards_id (vínculo com a tabela de cartões)
    • movements_id (vínculo com a tabela de movimentos)
    • bill_date (data de vencimento do lançamento)
  • movement_mergeds (vínculo de movimentos entre si)
    • id (primary key, auto_increment)
    • parameters_id (vínculo com a tabela de perfis)
    • movements_id (vínculo com a tabela de movimentos: registro pai)
    • movements_mergeds (vínculo com a tabela de movimentos: registros filhos)
  • movement_recurrents (registro de movimentos que serão criados automaticamente no CRON do sistema)
    • id (primary key, auto_increment)
    • parameters_id (vínculo com a tabela de perfis)
    • movements_id (vínculo com a tabela de movimentos)
    • movement_cards_id (vínculo com a tabela de movimentos de cartões)
  • users_parameters (vínculo da tabela de usuários e a tabela de perfis)
    • id (primary key, auto_increment)
    • parameters_id (vínculo com a tabela de perfis)
    • mailler (receber os alertas diários e semanais de vencimentos de contas)
    • users_id (vínculo com a tabela de usuários)
    • roles_id (vínculo com a tabela de regras de acesso)

Tabelas de sistema:

  • balances (registro de saldos de bancos, caixas, cartões e planejamentos)
    • id (primary key, auto_increment)
    • parameters_id (vínculo com a tabela de perfis)
    • banks_id (vínculo com a tabela de bancos)
    • boxes_id (vínculo com a tabela de caixas/carteiras)
    • cards_id (vínculo com a tabela de cartões)
    • plannings_id (vínculo com a tabela de planejamentos e metas)
    • date (data do registro)
    • value (valor do saldo)
  • regs (registro de atividades de exclusão e edição)
    • id (primary key, auto_increment)
    • parameters_id (vínculo com a tabela de perfis)
    • users_id (vínculo com a tabela de usuários)
    • log_type (login, noLogin)
    • function (Ex: banks, boxes, cards, movements, etc)
    • content (conteúdo do log)
    • username (usuário que modificou o registro)
  • roles (registro de regras de acesso do sistema)
    • id (primary key, auto_increment)
    • title (dev, admin, user, accounter)
  • knowledge (base de conhecimento com dicas de uso para exibição aleatóreas)
    • id (primary key, auto_increment)
    • title (descrição da dica)
  • parameters (registro de perfis)
    • id (primary key, auto_increment)
    • title (nome do perfil)
    • razao_social
    • ie (número da inscrição estadual)
    • im (número da inscrição municipal)
    • cpfcnpj
    • type (F: pessoa física, J: pessoa jurídica)
    • email
    • address
    • neighborhood
    • city
    • state
    • cep
    • phone1
    • phone2
    • logo (logomarca da empresa)
    • bill_date (data de vencimento do acesso)
    • plans_id (vínculo com a tabela de planos de acesso)
  • plans (planos de uso do sistema)
    • id (primary key, auto_increment)
    • title (nome do registro)
    • value (valores dos planos)
  • users (registro de usuários)
    • id (primary key, auto_increment)
    • name (nome do usuário)
    • username (login de acesso: email)
    • password
    • language (língua que utiliza o sistema)
    • last_parameter (último perfil acessado)

Migrations

Vamos criar todas as tabelas com os comandos abaixo:

php artisan make:migration knowledge --create=knowledge
php artisan make:migration plans --create=plans
php artisan make:migration roles --create=roles
php artisan make:migration parameters --create=parameters
php artisan make:migration users_parameters --create=users_parameters

php artisan make:migration account_plans --create=account_plans
php artisan make:migration costs --create=costs
php artisan make:migration document_types --create=document_types
php artisan make:migration event_types --create=event_types
php artisan make:migration banks --create=banks
php artisan make:migration boxes --create=boxes
php artisan make:migration cards --create=cards
php artisan make:migration customers --create=customers
php artisan make:migration providers --create=providers
php artisan make:migration plannings --create=plannings

php artisan make:migration transfers --create=transfers
php artisan make:migration movements --create=movements
php artisan make:migration movement_banks --create=movement_banks
php artisan make:migration movement_boxes --create=movement_boxes
php artisan make:migration movement_cards --create=movement_cards
php artisan make:migration movement_checks --create=movement_checks

php artisan make:migration balances --create=balances
php artisan make:migration movements_movement_cards --create=movements_movement_cards
php artisan make:migration movement_mergeds --create=movement_mergeds
php artisan make:migration movement_recurrents --create=movement_recurrents

php artisan make:migration regs --create=regs

Como parâmetro do comando de criação do migration, pode-se utilizar o ‘–create’ para criar novas tabelas no banco e o ‘–table’ para editar tabelas já existentes.

Agora nós precisamos editar cada arquivo dentro da pasta ‘database/migrations’ com os campos de cada tabela. Siga o exemplo em https://github.com/Maksoud/reiniciando/blob/master/database/migrations/2020_07_18_045358_parameters.php

A tabela Plans e Roles deverão existir mesmo se não houver outra tabela relacionada, por isso, não adicione o ‘->onDelete(‘cascade’);’, conforme os arquivos em https://github.com/Maksoud/reiniciando/tree/master/database/migrations.

A lista de tipos aceitos no Laravel encontram-se em https://laravel.com/docs/7.x/migrations#creating-columns.

Após a criação dos campos nos arquivos gerados em ‘database/migrations/’, Execute todas as operações de criação dos campos e tabelas no banco de dados:

php artisan migrate

Em caso de falhas, você pode executar o seguinte comando para desfazer as alterações e corrigir as falhas:

php artisan migrate:rollback

Ou você pode redefinir todo o projeto e remover os dados das tabelas, digitando o comando a seguir:

php artisan migrate:fresh

Esse projeto possui todo o código disponível em https://github.com/Maksoud/reiniciando e o projeto está hospedado em https://reiniciando.maksoud.dev/. Deixe seu comentário abaixo e colabore com esse projeto.

10 comentários em “Laravel: Criando o arquivo de Migration – Reiniciando”

  1. My husband and i were really peaceful that Jordan managed to round up his inquiry out of the precious recommendations he had through the blog. It is now and again perplexing just to happen to be giving for free tips which often some other people have been making money from. And we all remember we’ve got the blog owner to appreciate because of that. The most important illustrations you’ve made, the easy web site navigation, the relationships you can help promote – it’s many incredible, and it’s leading our son in addition to us consider that the issue is interesting, and that’s unbelievably vital. Many thanks for all the pieces!

  2. I have to express some appreciation to you for bailing me out of this particular dilemma. As a result of looking out through the world-wide-web and getting ways that were not productive, I thought my life was well over. Existing minus the solutions to the difficulties you’ve solved by means of the article content is a serious case, as well as ones which could have adversely affected my entire career if I hadn’t discovered your website. Your own personal talents and kindness in maneuvering everything was valuable. I am not sure what I would’ve done if I hadn’t encountered such a step like this. I can also at this moment relish my future. Thanks a lot so much for the professional and result oriented guide. I won’t be reluctant to refer the website to any person who should have guide about this matter.

  3. I needed to put you one bit of remark in order to say thanks the moment again considering the unique methods you’ve provided on this page. It’s remarkably generous of people like you to supply unreservedly all most people might have marketed for an ebook to generate some bucks for their own end, most notably considering that you might well have tried it in case you considered necessary. These ideas in addition served as a fantastic way to understand that other people online have the same passion just like mine to find out much more on the subject of this issue. Certainly there are many more pleasant occasions in the future for people who see your website.

  4. Thanks for all your valuable hard work on this blog. My niece enjoys engaging in research and it’s obvious why. We learn all of the dynamic medium you offer powerful guides via this web blog and even encourage response from other people on this article plus my daughter has always been being taught a great deal. Have fun with the remaining portion of the new year. You’re doing a terrific job.

  5. I not to mention my pals have already been examining the best strategies located on your web site then unexpectedly developed a terrible suspicion I never expressed respect to you for those secrets. My ladies are actually for this reason happy to see all of them and have now in truth been having fun with these things. We appreciate you being simply thoughtful and then for using some great subject matter millions of individuals are really wanting to be aware of. My honest regret for not expressing appreciation to sooner.

  6. My wife and i have been absolutely happy Michael managed to finish up his inquiry through the precious recommendations he had out of the web pages. It’s not at all simplistic to simply possibly be giving away key points which usually some others might have been trying to sell. We acknowledge we need the writer to thank because of that. The type of illustrations you made, the simple site navigation, the friendships you will help to create – it is mostly great, and it’s really leading our son in addition to the family understand this situation is interesting, and that’s quite mandatory. Thanks for all!

  7. I truly wanted to post a simple note to be able to thank you for all the wonderful steps you are showing on this website. My prolonged internet research has at the end been honored with extremely good know-how to exchange with my family and friends. I would assume that most of us website visitors actually are very fortunate to live in a decent place with so many marvellous people with very helpful opinions. I feel very lucky to have come across your webpages and look forward to tons of more pleasurable times reading here. Thanks a lot once more for a lot of things.

  8. I and my buddies were taking note of the great tips located on your site while before long I got a terrible feeling I never expressed respect to the site owner for those strategies. All of the boys were definitely as a result happy to learn all of them and have definitely been loving them. Appreciation for being quite helpful and for having this kind of perfect areas most people are really wanting to understand about. My personal honest apologies for not saying thanks to you earlier.

  9. I intended to draft you a bit of word to finally say thanks once again regarding the pretty solutions you’ve contributed on this page. It’s simply seriously open-handed with you to present easily what some people would’ve supplied for an ebook to make some dough on their own, especially since you could have tried it if you considered necessary. These techniques in addition acted to become a great way to realize that the rest have similar desire like mine to understand many more on the subject of this issue. I know there are a lot more enjoyable periods in the future for many who read through your blog post.

  10. Thanks for all of the work on this site. Betty loves managing research and it’s really obvious why. Many of us notice all about the powerful medium you deliver vital guidelines through your blog and in addition cause contribution from other individuals on that concern while our favorite child is becoming educated a whole lot. Have fun with the rest of the year. You have been performing a terrific job.

Deixe um comentário