tecnÓlogo: anÁlise e desenvolvimento de sistemas...

30
Gil Eduardo de Andrade INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 Brasil (1/30) TECNÓLOGO: ANÁLISE E DESENVOLVIMENTO DE SISTEMAS Disciplina de Desenvolvimento Web II Framework Laravel: Migration / Model / Tinker https://laravel.com/docs/6.x Modelo MVC Laravel Conexão com Banco de Dados Arquivo Modificado: “/.env Figura 01: Configuração da conexão com o banco de dados /.env. Obs.: para que seja possível trabalhar com o banco de dados MySQL, como exemplificado nessa aula, é necessário que o mesmo esteja instalado e configurado adequadamente. Após isso é necessária a criação de uma base de dados. Controle Visualização Modelo BD Solicita: Dados Resposta: Dados Requisição: Cliente Envia: Dados Resposta: Requisição Cliente Nome da base de dados Usuário do banco de dados Senha do banco de dados

Upload: others

Post on 12-Aug-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: TECNÓLOGO: ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ...gileduardo.com.br/ifpr/dwii/downloads/dwii_aula06.pdf · Figura 01: Configuração da conexão com o banco de dados – “/.env”

Gil Eduardo de Andrade

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (1/30)

TECNÓLOGO: ANÁLISE E DESENVOLVIMENTO DE SISTEMAS Disciplina de Desenvolvimento Web II

Framework Laravel: Migration / Model / Tinker

https://laravel.com/docs/6.x

Modelo MVC – Laravel

Conexão com Banco de Dados

Arquivo Modificado: “/.env”

Figura 01: Configuração da conexão com o banco de dados – “/.env”.

Obs.: para que seja possível trabalhar com o banco de dados MySQL, como exemplificado nessa aula, é necessário que o mesmo esteja instalado e configurado adequadamente. Após isso é necessária a criação de uma base de dados.

Controle

Visualização Modelo

BD

Solicita: Dados

Resposta: Dados

Requisição: Cliente

Envia: Dados

Resposta: Requisição Cliente

Nome da base de dados

Usuário do banco de dados

Senha do banco de dados

Page 2: TECNÓLOGO: ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ...gileduardo.com.br/ifpr/dwii/downloads/dwii_aula06.pdf · Figura 01: Configuração da conexão com o banco de dados – “/.env”

Gil Eduardo de Andrade

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (2/30)

Migration – Criando tabelas no banco via Laravel Comando: php artisan make:migration cliente --create=clientes

Figura 02: Criando uma nova migration – “cliente”.

Arquivo Gerado: “/database/migrations/2019_11_24_172033_cliente.php”

Figura 03: Arquivo de migração gerado após comando “make:migration”.

Codificando arquivo de Migração – Definindo formato da tabela

Arquivo Modificado: “/database/migrations/2019_11_24_172033_cliente.php”

Figura 04: Definindo o formato da nova tabela a ser criada - “migration cliente”.

Campo de auto-incremento utilizado como chave-primária. No Laravel, por padrão, esse campo tem o nome de id.

Indica que é um campo de valor único, ou seja, não pode haver dois ou mais registros com um mesmo e-mail.

O nome das tabelas, seguindo o padrão Laravel, deve estar no plural.

Page 3: TECNÓLOGO: ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ...gileduardo.com.br/ifpr/dwii/downloads/dwii_aula06.pdf · Figura 01: Configuração da conexão com o banco de dados – “/.env”

Gil Eduardo de Andrade

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (3/30)

Obs.: o método up() é invocado quando executamos o comando de migração (migrate), sendo responsável por criar a tabela no banco de dados. Já o método down() é invocado quando queremos desfazer as modificados efetuadas pelo método up(), para tal executamos o comando reverso (rollback) ao de migração. Efetuando uma migração – Criando uma tabela no banco Comando: php artisan migrate

Figura 05: Executando o comando de migração e criando a tabela no banco - “atrisan migrate”.

Figura 06: Tabelas criadas após execução do comando de migração - “atrisan migrate”.

Obs.: Além da tabela clientes que definimos no arquivo de migração criado, também foram criadas outras tabelas, isso ocorre porque por padrão o laravel já trás alguns arquivos de migração prontos quando criamos nosso projeto. As tabelas users e password_resets são utilizadas no processo de autenticação de usuários dentro da aplicação que estamos criando, elas serão estudas em mais

Page 4: TECNÓLOGO: ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ...gileduardo.com.br/ifpr/dwii/downloads/dwii_aula06.pdf · Figura 01: Configuração da conexão com o banco de dados – “/.env”

Gil Eduardo de Andrade

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (4/30)

detalhes posteriormente. A tabela migrations contém o histórico de migrações efetuadas, com intuito de manter o processo de desenvolvimento organizado.

Consultando o Estado atual das Migrações Comando: php artisan migrate:status

Figura 07: Consultando estado atual das migrações – “php artisan migrate:status”.

Comando: php artisan make:migration veterinario --create=veterinarios Comando: php artisan migrate:status

Figura 08: Consultando estado atual das migrações – “php artisan migrate:status”.

Page 5: TECNÓLOGO: ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ...gileduardo.com.br/ifpr/dwii/downloads/dwii_aula06.pdf · Figura 01: Configuração da conexão com o banco de dados – “/.env”

Gil Eduardo de Andrade

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (5/30)

Desfazendo uma Migração

Comando: php artisan migrate:rollback

Figura 09: Executando o comando que desfaz uma migração - “atrisan migrate:rollback”.

Comando: php artisan migrate:status

Figura 10: Consultando estado atual das migrações – “php artisan migrate:status”.

Page 6: TECNÓLOGO: ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ...gileduardo.com.br/ifpr/dwii/downloads/dwii_aula06.pdf · Figura 01: Configuração da conexão com o banco de dados – “/.env”

Gil Eduardo de Andrade

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (6/30)

Comando: php artisan migrate

Figura 11: Executando o comando de migração e criando a tabela no banco - “atrisan migrate”.

Figura 12: Tabelas criadas após execução do comando de migração - “atrisan migrate”.

Figura 13: Consultando estado atual das migrações – “php artisan migrate:status”.

Page 7: TECNÓLOGO: ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ...gileduardo.com.br/ifpr/dwii/downloads/dwii_aula06.pdf · Figura 01: Configuração da conexão com o banco de dados – “/.env”

Gil Eduardo de Andrade

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (7/30)

Desfazendo todas as Migrações

Comando: php artisan migrate:reset

Figura 14: Executa o comando que desfaz todas as migrações - “atrisan migrate:reset”.

Figura 15: Lista de Tabelas após execução do comando “migrate:reset”.

Figura 16: Consultando estado atual das migrações – “php artisan migrate:status”.

Page 8: TECNÓLOGO: ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ...gileduardo.com.br/ifpr/dwii/downloads/dwii_aula06.pdf · Figura 01: Configuração da conexão com o banco de dados – “/.env”

Gil Eduardo de Andrade

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (8/30)

Refazendo todas as Migrações [via método “down()”] Comando: php artisan migrate:refresh

Figura 17: Executa o comando que refaz (usando método down) todas as migrações - “atrisan migrate:refresh”.

Refazendo todas as Migrações [via “drop” em todas as tabelas] Comando: php artisan migrate:fresh

Figura 18: Executa o comando que refaz (via drop table) todas as migrações - “atrisan migrate:fresh”.

Page 9: TECNÓLOGO: ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ...gileduardo.com.br/ifpr/dwii/downloads/dwii_aula06.pdf · Figura 01: Configuração da conexão com o banco de dados – “/.env”

Gil Eduardo de Andrade

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (9/30)

Codificando arquivo de Migração – Veterinário

Arquivo Modificado: “/database/migrations/2019_11_24_184211_veterinario.php”

Figura 19: Definindo o formato da nova tabela a ser criada - “migration veterinario”.

Migration – Criando arquivo de migração: Especialidade

Comando: php artisan make:migration especialidade --create=especialidades

Figura 20: Criando uma nova migration – “especialidade”.

Codificando arquivo de Migração – Especialidade

Arquivo Modificado: “/database/migrations/2019_11_26_172624_especialidade.php”

Figura 21: Definindo o formato da nova tabela a ser criada - “migration especialidade”.

Page 10: TECNÓLOGO: ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ...gileduardo.com.br/ifpr/dwii/downloads/dwii_aula06.pdf · Figura 01: Configuração da conexão com o banco de dados – “/.env”

Gil Eduardo de Andrade

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (10/30)

Refazendo todas as Migrações [via método “down()”]

Comando: php artisan migrate:refresh

Figura 22: Executa o comando que refaz (usando método down) todas as migrações - “atrisan migrate:refresh”.

Figura 23: Tabelas criadas após execução do comando de migração - “atrisan migrate:refresh”.

Page 11: TECNÓLOGO: ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ...gileduardo.com.br/ifpr/dwii/downloads/dwii_aula06.pdf · Figura 01: Configuração da conexão com o banco de dados – “/.env”

Gil Eduardo de Andrade

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (11/30)

Adicionando um Campo/Chave Estrangeira a tabela “veterinarios”

Comando: php artisan make:migration add_id_esp_to_veterinarios --table=veterinarios

Figura 24: Criando uma nova migration para adicionar um campo a tabela “veterinarios”.

Arquivo Modificado: “/database/migrations/2019_11_26_..._to_veterinarios.php”

Figura 25: Definindo o formato do novo campo para tabela “veterinarios”.

Comando: php artisan migrate

Figura 26: Campo/Chave estrangeira “especialidade_id” criado para tabela “veterinarios”.

O método “down” deve desfazer o que foi efetuado pelo método “up”.

Define o campo “especialidade_id” como chave estrangeira, tendo como referência o campo “id” da tabela “especialidades”.

Page 12: TECNÓLOGO: ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ...gileduardo.com.br/ifpr/dwii/downloads/dwii_aula06.pdf · Figura 01: Configuração da conexão com o banco de dados – “/.env”

Gil Eduardo de Andrade

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (12/30)

Migração com relacionamento “muitos para muitos” Tabela “racas”

Comando: php artisan make:migration raca --create=racas

Figura 27: Criando uma nova migration – “racas”.

Arquivo Modificado: “/database/migrations/2019_11_27_001940_raca.php”

Figura 28: Definindo o formato da nova tabela a ser criada - “migration veterinario”.

Obs.: A clausula “nullable()” utilizada junto ao campo “descricao” indica que há obrigatoriedade de preenchimento do mesmo para os registros da tabela “raças”.

Tabela “pets”

Comando: php artisan make:migration pet --create=pets

Figura 29: Criando uma nova migration – “pets”.

Preenchimento não obrigatório para o campo “descrição”.

Page 13: TECNÓLOGO: ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ...gileduardo.com.br/ifpr/dwii/downloads/dwii_aula06.pdf · Figura 01: Configuração da conexão com o banco de dados – “/.env”

Gil Eduardo de Andrade

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (13/30)

Arquivo Modificado: “/database/migrations/2019_11_27_002910_pet.php”

Figura 30: Definindo o formato da nova tabela a ser criada - “migration pet”.

Migração Comando: php artisan migrate

Figura 31: Executando o comando de migração e criando as tabelas “racas” e “pets” no banco.

Figura 32: Tabelas “racas” e “pets” criadas após execução do comando de migração.

Page 14: TECNÓLOGO: ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ...gileduardo.com.br/ifpr/dwii/downloads/dwii_aula06.pdf · Figura 01: Configuração da conexão com o banco de dados – “/.env”

Gil Eduardo de Andrade

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (14/30)

Tabela “clientes_pets” Comando: php artisan make:migration cliente_pet --create=clientes_pets Arquivo Modificado: “/database/migrations/ 2019_11_27_012100_cliente_pet.php”

Figura 33: Definindo o formato da nova tabela a ser criada - “migration cliente_pet”.

Obs.: A clausula “onDelete(‘cascade’)” utilizada junto as chaves estrangeiras “cliente_id” e “pet_id” indica que se o cliente ou pet (que possuem seu id como chave estrangeira na tabela que está sendo criada) forem deletados nas suas respectivas tabelas de origem, os registros na tabela local que contenham seus “ids” também devem ser deletados. Obs.: A clausula “primary(*‘cliente_id’, ‘pet_id’+)” indica que a chave primária para tabela que está sendo criada é composta pelos campos “cliente_id” e “pet_id”.

Migração

Comando: php artisan migrate

Figura 31: Executando o comando de migração e criando da tabela “clientes_pets” no banco.

Page 15: TECNÓLOGO: ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ...gileduardo.com.br/ifpr/dwii/downloads/dwii_aula06.pdf · Figura 01: Configuração da conexão com o banco de dados – “/.env”

Gil Eduardo de Andrade

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (15/30)

Criando Modelos

Comando: php artisan make:model Raca Comando: php artisan make:model Especialidade Comando: php artisan make:model Cliente Comando: php artisan make:model Veterinario Comando: php artisan make:model Pet

Figura 32: Criando classes de modelo via linha de comando – “php artisan make:model”.

Arquivos Criados: “/app/Raca.php” – “/app/Especialidade.php”

“/app/Cliente.php” – “/app/Veterinario.php” – “/app/Pet.php” Obs.: As classes de Modelo, seguindo padrões do Laravel, devem ser criadas com nome contendo inicial maiúscula e com o mesmo no nome da tabela a qual estarão vinculadas, porém sem o “s” final. Para os comandos em questão temos:

Tabela racas → Modelo Raca Tabela especialidades → Modelo Especialidade Tabela clientes → Modelo Cliente Tabela veterinarios → Modelo Veterinario Tabela pets → Modelo Pets

Obs.: Caso o desenvolvedor opte por não utilizar esse padrão, e queira vincular uma modelo a uma tabela do banco de modo explicito via código-fonte, basta adicionar um atributo “$table”, na classe modelo em questão, contendo o nome da tabela do banco a qual deseja vinculá-la. Isso é mostrado na Figura 33.

Page 16: TECNÓLOGO: ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ...gileduardo.com.br/ifpr/dwii/downloads/dwii_aula06.pdf · Figura 01: Configuração da conexão com o banco de dados – “/.env”

Gil Eduardo de Andrade

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (16/30)

Figura 33: Utilizando o atributo “$table” para vinculas uma “Model” a uma tabela do banco.

Obs.: o exemplo acima é apenas ilustrativo, visto que a classe Cliente já foi criada seguindo padrão Laravel, ou seja, já possui vinculo com a tabela de mesmo nome com a letra “s” no final.

Utilizando o recurso Tinker – Adicionando Registros nas Tabelas

Comando: php artisan tinker

Figura 34: Executando o recurso Tinker – linha de comando.

Visualizando registros da Tabela “racas” – Model Raca Comando: use \App\Raca; Comando: Raca::all();

Figura 35: utilizando método “all()” da Modelo “Raca” via Tinker.

Retorna um array vazio porque a tabela raca não possui registros.

Page 17: TECNÓLOGO: ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ...gileduardo.com.br/ifpr/dwii/downloads/dwii_aula06.pdf · Figura 01: Configuração da conexão com o banco de dados – “/.env”

Gil Eduardo de Andrade

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (17/30)

Inserindo registro na Tabela “racas” – Model Raca Comando: $registro = new Raca(); Comando: $registro->save();

Figura 36: utilizando o método “save()” da Modelo “Raca” via Tinker.

Figura 37: utilizando método “all()” da Model “Raca” via Tinker.

Cria objeto do tipo Raca para registro no banco.

Configura o campo nome.

Configura o campo descricao.

Insere/Salva o registro na tabela.

Collection contendo todos os registros que foram salvos/inseridos na tabela racas.

Page 18: TECNÓLOGO: ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ...gileduardo.com.br/ifpr/dwii/downloads/dwii_aula06.pdf · Figura 01: Configuração da conexão com o banco de dados – “/.env”

Gil Eduardo de Andrade

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (18/30)

Otimizando o processo de Inserção de registros Arquivo Modificado: “/App/Raca.php”

Figura 38: utilizando o atributo “fillable” para otimizar o processo de inserção na tabela.

Obs.: para que o procedimento a seguir funcione corretamente é necessário sair do recurso Tinker (comando “exit”) e entrar novamente (“php artisan tinker”). Isso fará com que as alterações efetuadas no arquivo da Model Raca sejam carregadas.

Comando: $Raca::create();

Figura 39: utilizando o método “create()” da Modelo “Raca” via Tinker.

Obs.: Nesse momento já é possível efetuar outras inserções nas tabelas “racas” e “especialidades” no intuito de povoá-las e ao mesmo tempo praticar a codificação apresentada. Vale ressaltar que as linhas de código utilizadas via Tinker são as mesmas que serão usadas dentro das classes no projeto Laravel durante a construção da aplicação.

Page 19: TECNÓLOGO: ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ...gileduardo.com.br/ifpr/dwii/downloads/dwii_aula06.pdf · Figura 01: Configuração da conexão com o banco de dados – “/.env”

Gil Eduardo de Andrade

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (19/30)

Alterando um registro da Tabela “racas” – Model Raca

Comando: $registro = Raca::find(1); Comando: $registro->save();

Figura 40: utilizando o método “find()” da Modelo “Raca” via Tinker.

Obs.: O método find() efetua a busca na tabela comparando o valor inteiro passado como parâmetro com a chave primária da mesma. Considerando o padrão Laraval, essa comparação é feita, normalmente, com o campo “id”.

Otimizando o processo de Alteração de registros

Comando: $registro->fill([...]);

Figura 41: utilizando o método “fill([...])” da Modelo “Raca” via Tinker.

Obtém a referencia do registro com id=4.

Altera o campo descricao.

Salva a alteração na tabela.

Dados do registro com id=4 após a alteração do campo descricao.

Page 20: TECNÓLOGO: ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ...gileduardo.com.br/ifpr/dwii/downloads/dwii_aula06.pdf · Figura 01: Configuração da conexão com o banco de dados – “/.env”

Gil Eduardo de Andrade

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (20/30)

Efetuando Consultas

Comando: Raca::find([...]);

Figura 42: utilizando o método “find([...])” da Modelo “Raca” via Tinker.

Comando: Raca::where(...)->get();

Figura 43: utilizando o método “where()” da Modelo “Raca” via Tinker.

Obs.: A cláusula “where” permite a criação e vários tipos de comparação para efetuar uma busca, assim como a estrutura utilizada na linguagem SQL. Alguns exemplos:

Raca::where('nome', "Pug")->get();

A cláusula “where” permite efetuar busca de acordo com um campo específico da tabela.

Page 21: TECNÓLOGO: ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ...gileduardo.com.br/ifpr/dwii/downloads/dwii_aula06.pdf · Figura 01: Configuração da conexão com o banco de dados – “/.env”

Gil Eduardo de Andrade

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (21/30)

Raca::where('id', '>', 1)->get(); Raca::where('id', '<', 3)->get(); Raca::where('id', '<>', 4)->get(); Raca::whereBetween('id', [1, 3])->get(); Raca::whereNotBetween('id', [1, 3])->get(); Raca::whereNotIn('id', [2, 4])->get();

Comando: Raca::where( ‘like’, ‘..%’ )->get(); [Início]

Figura 44: utilizando o método “where( ‘like’ )” – busca no início da String.

Comando: Raca::where( ‘like’, ‘%...%’ )->get(); [Meio]

Figura 45: utilizando o método “where( ‘like’ )” – busca no meio da String.

Comando: Raca::where( ‘like’, ‘%...’ )->get(); [Fim]

Page 22: TECNÓLOGO: ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ...gileduardo.com.br/ifpr/dwii/downloads/dwii_aula06.pdf · Figura 01: Configuração da conexão com o banco de dados – “/.env”

Gil Eduardo de Andrade

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (22/30)

Figura 46: utilizando o método “where( ‘like’ )” – busca no final da String.

Efetuando Consultas – Encadeando Queries

Comando: Raca::where();

[AND]

Figura 47: utilizando o método “where()”de modo encadeado – modo AND.

[OR]

Figura 48: utilizando o método “where()”de modo encadeado – modo OR.

Page 23: TECNÓLOGO: ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ...gileduardo.com.br/ifpr/dwii/downloads/dwii_aula06.pdf · Figura 01: Configuração da conexão com o banco de dados – “/.env”

Gil Eduardo de Andrade

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (23/30)

Efetuando Consultas – Agrupando Queries Comando: Raca::where(function($query){}); Condição: (id>1 and id<4) and (nome=”Bulldog Inglês” or nome=”Labrador”) Consulta Completa: Raca::where( function($query) { $query->where('id', '>', 1)->where('id', '<', 4); })->where(function($query){$query->where('nome','Bulldog Inglês')->orWhere( 'nome', 'Labrador'); })->get();

Figura 49: utilizando o método “where()”de modo agrupado.

Collections – Funções interessantes Definição: no Laravel, quando uma consulta é efetuada e retorna um conjunto de dados, ao invés dos mesmos retornarem no formato “array” eles são retornados de modo empacotado em uma coleção ou collection. Funções: Raca::all()->reverse(); Raca::all()->toArray(); Raca::all()->toJson(); Raca::all()->random();

Page 24: TECNÓLOGO: ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ...gileduardo.com.br/ifpr/dwii/downloads/dwii_aula06.pdf · Figura 01: Configuração da conexão com o banco de dados – “/.env”

Gil Eduardo de Andrade

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (24/30)

Raca::all()->avg('id'); Raca::all()->max('id'); Raca::all()->min('id'); Raca::all()->sum('id'); Removendo um registro da Tabela racas Comando: $registro = Raca::find(4); Comando: $registro->delete();

Figura 50: utilizando o método “delete()” da Modelo “Raca” via Tinker.

Otimizando o processo de Remoção de registros

Comando: Raca::destroy(2);

Figura 51: utilizando o método “destroy()” da Modelo “Raca” via Tinker.

Page 25: TECNÓLOGO: ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ...gileduardo.com.br/ifpr/dwii/downloads/dwii_aula06.pdf · Figura 01: Configuração da conexão com o banco de dados – “/.env”

Gil Eduardo de Andrade

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (25/30)

Utilizando o recurso softDelete Arquivo Modificado: “/app/Raca.php”

Figura 52: utilizando o recurso “softDelete” – Modelo “Raca”.

Arquivo Modificado: “/database/migrations/2019_11_27_001940.php”

Figura 53: utilizando o recurso “softDelete” – Migration “Raca”.

Recriando as Tabelas e Adicionando Registros

Comando: “php artisan migrate:fresh” Comando: “$Raca::create(*...+)”

Figura 54: utilizando o recurso “softDelete” – Tabela “Raca”.

Linhas adicionadas para uso do SoftDelete.

Linha adicionada para uso do SoftDelete.

Ao utilizar o recurso SoftDelete o campo “deleted_at” é automaticamente criado.

Page 26: TECNÓLOGO: ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ...gileduardo.com.br/ifpr/dwii/downloads/dwii_aula06.pdf · Figura 01: Configuração da conexão com o banco de dados – “/.env”

Gil Eduardo de Andrade

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (26/30)

Removendo Registros da Tabela Raca com SoftDelete

Comando: Raca::destroy(2);

Figura 54: utilizando o recurso “softDelete” – Registro removido.

Comando: Raca::all(); Obtendo Todos os Registros, inclusive os Deletados

Comando: Raca::withTrashed()->get();

Figura 55: utilizando o recurso “softDelete” – “withTrashed()”.

Obtendo Somente os Registros Deletados

Comando: Raca::onlyTrashed()->get();

Registro removido via SotfDelete, continua armazenado, porém com data e hora da remoção.

Page 27: TECNÓLOGO: ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ...gileduardo.com.br/ifpr/dwii/downloads/dwii_aula06.pdf · Figura 01: Configuração da conexão com o banco de dados – “/.env”

Gil Eduardo de Andrade

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (27/30)

Figura 56: utilizando o recurso “softDelete” – “onlyTrashed()”.

Verificando se é um Registro Deletado

Comando: $r = Raca::withTrashed()->get(); Comando: $r[]->trashed();

Figura 57: utilizando o recurso “softDelete” – Verificando se é um registro deletado – “trashed()”.

Restaurando um Registro Deletado

Comando: $r = Raca::onlyTrashed()->get(); Comando: $r[]->restore();

Figura 58: utilizando o recurso “softDelete” – Restaurando um registro deletado – “restore()”.

Page 28: TECNÓLOGO: ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ...gileduardo.com.br/ifpr/dwii/downloads/dwii_aula06.pdf · Figura 01: Configuração da conexão com o banco de dados – “/.env”

Gil Eduardo de Andrade

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (28/30)

Figura 58: utilizando o recurso “softDelete” – Restaurando um registro deletado – Tabela “raca”.

Forçando a Remoção de um Registro

Comando: Raca::destroy(id);

Figura 59: utilizando o recurso “softDelete” – Registro removido.

Comando: $r = Raca::onlyTrashed()->get(); Comando: $r[0]->forceDelete();

Figura 60: utilizando o recurso “softDelete” – Forçando a remoção de um registro – “forceDelete()”.

O campo “deleted_at” volta a ficar com valor nulo, já que foi restaurado.

Registro removido via SotfDelete.

Page 29: TECNÓLOGO: ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ...gileduardo.com.br/ifpr/dwii/downloads/dwii_aula06.pdf · Figura 01: Configuração da conexão com o banco de dados – “/.env”

Gil Eduardo de Andrade

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (29/30)

Figura 61: utilizando o recurso “softDelete” – Forçando a remoção de um registro – Tabela “raca”.

Criando Modelos com Migration Vinculada

Comando: php artisan make:model Clinica -m;

Figura 62: Criando a Modelo “Clinica” com Migration Vinculada.

Arquivo Modificado: “/database/migrations/2019_11_29_231339.php” Comando: php artisan migrate;

Figura 63: Definindo o formato da nova tabela a ser criada - “migration clinica”.

Page 30: TECNÓLOGO: ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ...gileduardo.com.br/ifpr/dwii/downloads/dwii_aula06.pdf · Figura 01: Configuração da conexão com o banco de dados – “/.env”

Gil Eduardo de Andrade

INSTITUTO FEDERAL DO PARANÁ | Paranaguá Rua Antônio Carlos Rodrigues, 453 - Porto Seguro, Paranaguá - PR | 83215-750 – Brasil (30/30)

Figura 64: Executando o comando de migração e criando da tabela “clinica” no banco.