O Laravel  CRUD é uma operação básica para aprender laravel do zero. Aprenderemos como criar aplicativos da Web pequenos que criam dados no banco de dados, lêem dados do banco de dados, atualizam e excluem dados do banco de dados. Podemos atualizar as 7 versões do seu Laravel,









Visão geral do projeto bruto do Laravel 

  1. Etapa 1: Instale e configure o Laravel .
  2. Etapa 2: Configure o banco de dados MySQL.
  3. Etapa 3: Crie rotas e arquivos de migração.
  4. Etapa 4: crie um modelo, rota, controlador e visualize o arquivo.
  5. Etapa 5: configure a autoinicialização e crie as visualizações para o Laravel
  6. Etapa 6: exibir os dados para o frontend.
  7. Etapa 7: edite e atualize os dados no banco de dados.
  8. Etapa 8: escreva a lógica para excluir os dados do banco de dados dentro do arquivo do controlador.

#Laravel novos recursos

O Laravel 7 continua as melhorias feitas no Laravel 6 , introduzindo os seguintes recursos.
  1. Controle de versão semântico
  2. Compatibilidade com o Laravel Vapor ,
  3. Respostas de autorização aprimoradas,
  4. Middleware de trabalho,
  5. Coleções lazy,
  6. Melhorias na subconsulta,
  7. Extração de scaffolding de front-end para o pacote laravel/ui Composer

#Requisitos do servidor

Consulte os seguintes requisitos do servidor para executar o Laravel 7.
  1. PHP> = 7.2.5
  2. Extensão PHP BCMath
  3. Extensão PHP Ctype 
  4. Extensão PHP JSON
  5. Extensão PHP Mbstring
  6. Extensão PHP OpenSSL
  7. Extensão PHP DOP
  8. Extensão PHP Tokenizer 
  9. Extensão XML PHP

#Prerequisitos

Para este projeto bruto do Laravel, estou usando o  Visual Studio Code como um editor para o meu projeto. Se você não sabe como configurar o PHP no VSCode, temos neste tutorial um tutorial perfeito sobre  como configurar o Visual Studio Code For PHP Developers .
                                         Laravel  crud tutorial

Etapa 1: Configurar e instalar o Laravel

Você pode instalar o Laravel 7 via instalador global. usando o comando Composer Create-Project ou laravel new  << project >>
1 - composer create-project --prefer-dist laravel/laravel armsblog
Agora, vá para a pasta armsblog  e crie o banco de dados no arquivo .env ,  em seguida vá até o diretório Providers abra o AppServiceProvider e insira o código abaixo no método boot() para evitar conflitos de limites de string ao gerar as migrates .

2 - cd ./armsblog

3 - Abra o arquivo .env e Crie o banco

4 - Abra o AppServiceProvider e insira
 
use Illuminate\Support\Facades\Schema;  
                                        
public function boot()                 
{                                      
    Schema::defaultStringLength(191);  
                                        
}                                     

Etapa 2: Configurar o banco de dados MySQL

Eu criei o banco de dados MySQL chamado  laraUpdate   e agora escrevo as credenciais do MySQL dentro de um  arquivo .env  .
Antes de criar migrações, precisamos configurar o banco de dados MySQL, supondo que você saiba como criar o banco de dados usando o PHPMyAdmin.
Após criar um banco de dados, adicionaremos credenciais de banco de dados em nosso aplicativo. O Laravel tem o  arquivo de ambiente env que terá todos os dados confidenciais, como detalhes do banco de dados, detalhes do driver de correio etc.
Como não é recomendável salvar essas informações diretamente dentro de um código (os arquivos de ambiente não se limitam apenas ao PHP, eles são usados ​​em todas as outras estruturas).
O arquivo .env é carregado dentro dos arquivos do diretório configUm arquivo .env está localizado na raiz do nosso projeto laravel.
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laraUpdate
DB_USERNAME=root
DB_PASSWORD=""
Então agora você poderá conectar um  banco de  dados MySQL 

Etapa 3: Configurar o Bootstrap 4

No momento, existem alguns problemas ou, de alguma forma, não vejo nenhum código no arquivo públic >> css >> app.css. Eu já compilei o arquivo CSS e JS pelo  comando npm run dev  , mas ainda assim, o arquivo app.css  transferi manualmente pois falha na compilação.
Uma solução possível é copiar o código do arquivo app.css da versão anterior do Laravel e colá-lo aqui no arquivo público >> css >> app.css público da pasta armsblogcomo a seguir. Eu postei o link do arquivo css para troubleshooting 1 e 2 
Agora, a segunda solução possível é essa. Esse novo scaffolding está disponível apenas no Laravel 6 e 7  e não nas versões anteriores, como o Laravel 5.8 ou 5.7.
Embora o Laravel 7 não determine quais pré-processadores JavaScript ou CSS você usa, ele fornece o ponto de partida essencial, usando o Bootstrap  e o  Vue,  que será útil para muitos projetos.
Por padrão, o Laravel usa o  NPM  para instalar esses dois pacotes de front-end.
Os scaffolding Bootstrap e Vue fornecidos pelo Laravel estão localizados no   pacote Composer, que você pode instalar usando o Composer através do seguinte comando:laravel/breeze --dev
composer require laravel/breeze --devphp artisan breeze:install

npm install && npm run dev

Na sequencia será mostrado a sequencia de dados processados.
Um erro muito comum no sistema windows é após o processamento do npm run dev não gerar o css do front registro e login então terá de inserir manualmente caso ocorra este erro 1-troubleshooting  2-troubleshooting.
O Laravel  sempre acompanha as migrates, para que você possa gerar as tabelas no banco de dados usando o seguinte comando.
php artisan migratephp artisan serve
Você verá que três tabelas serão criadas dentro dos bancos de dados MySQL.
php artisan serve  é para checar se, até aqui está tudo bem.
Criaremos uma operação CRUD nos programas da Netflix. Assim, um usuário pode criar, ler, atualizar e excluir os programas de um banco de dados. Então, vamos criar os arquivos de models e migrates.

Etapa 4: criar os arquivos de model e migrate

Já configuramos nosso banco de dados, agora vamos ver as migrações de banco de dados. A migração é usada para salvar os detalhes sobre a tabela do banco de dados e suas propriedades, para que você não precise gerar manualmente todas as tabelas acessando a interface do banco de dados ou algo como phpmyadmin.
Podemos desenvolver as migrações usando o artesão com o comando "make: migration".
php artisan make:model Show -m



Em laravel, o nome de um modelo deve ser singular, e o nome da migração deve ser o plural, para que ele possa encontrar automaticamente o nome de uma tabela.
Você pode encontrar esses arquivos de migração dentro do diretório database/migrations.
O Laravel vem com três migrações, a saber, users, failed_jobs e password_resets (todos os arquivos de migração são anexados com um carimbo de data / hora), usados ​​para autenticação.
Se você deseja criar a migração, mas tem um nome de tabela diferente em mente, é possível definir explicitamente um nome de tabela com o sinalizador “- create”.
Ele criará o  arquivo Show.php e o  arquivo de migração [timestamp] create_shows_table.php .
Agora, abra um arquivo de migração dentro do  database >> migrations >> [timestamp] create_shows_table e adicione o seguinte esquema dentro dele. Quando você abre um table.php, você verá dois métodos, up() down().
A função up() é usada para criar / atualizar tabelas, colunas e índices. A função down() é usada para reverter uma operação feita pelo método up().
Dentro da função up(), temos o método Schema: create ('table_name,' callback) que será usado para criar a nova tabela.
Dentro de um retorno de chamada, temos $table-> bigIncrements ('id') que criará a coluna inteira auto_increment com a chave primária e o argumento 'id' é o nome de uma coluna.
Agora, adicione as seguintes colunas.
public function up()
{
        Schema::create('shows', function (Blueprint $table) {
            $table->id();            $table->unsignedBIgInteger('id_usuario'); $table->foreign('id_usuario')->references('id')->on('users')->onDelete('cascade')->onUpdate('cascade');            $table->string('nome');
            $table->string('genero');
            $table->string('idade');
            $table->string('apelido');            $table->timestamps();        });         }
 app/Models/User.php
public function show()
{
    return $this->hasOne('App\Models\Shows','id_usuario');
}

Agora, crie a tabela no banco de dados usando o seguinte comando.
php artisan migrate
O comando executará as migrates e criará tabelas definidas. Ele executará a função up().
Se você precisar reverter as migrações, poderá usar o   comando migrate : rollback, que executará a função down() como o  php artisan migrate: rollback.
Agora, adicione a  propriedade preenchível  dentro do arquivo Show.php .
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Show extends Model
{
   use HasFactory;     protected $fillable = ['nome', 'genero', 'idade', 'apelido', 'id_usuario'];
    protected $table='shows';

    public function relUsers()
    {
        return $this->hasOne('App\Models\User','id','id_usuario');
    }}
Podemos especificar todas as propriedades para modificar o comportamento do modelo.
Podemos escrever uma propriedade $table que é usada para determinar um nome da tabela com a qual este modelo irá interagir nas operações futuras.
Por padrão, ele definirá um nome de tabela como o plural do nome do modelo, por exemplo, mostra a tabela para Mostrar modelo e a tabela de usuários para o Modelo do usuário.
Quando você não precisar usar registros de data e hora em sua tabela, também precisará especificar a propriedade $timestamps e configurá-la como valor falso no seu modelo, porque o Laravel espera que sua tabela tenha as colunas de registro de data e hora created_at e updated_at.

Etapa 5: criar route e controller

Primeiro, crie o ShowController usando o seguinte comando.
php artisan make:controller ShowController --resource
Observe que também adicionamos o sinalizador - resource, que definirá seis métodos dentro do ShowController, a saber:
  1. Índice (usado para exibir uma lista de programas)
  2. Criar (mostrará a visualização com um formulário para criar um Show)
  3. Store (usado para criar um Show dentro do banco de dados. Nota: o método create envia para o método store)
  4. Show (exibirá um Show especificado)
  5. Editar (mostrará o formulário para editar um Show. O formulário será preenchido com os dados existentes do Show)
  6. Atualização (Usado para atualizar um Show dentro do banco de dados. Nota: editar os envios para o método de atualização)
  7. Destruir (usado para excluir um Show especificado)
Agora, dentro do  arquivo routes >> web.php  , adicione a seguinte linha de código.
<?phpuse App\Http\Controllers\ShowController;

Route::get('/', function () {
    return view('welcome');
});

Route::resource('/shows', 'App\Http\Controllers\ShowController');
Podemos passar parâmetros dinâmicos com colchetes {}, e você deve ter notado que show, update e destroy tem o mesmo URL, mas métodos diferentes, por isso é legítimo.
Assim como - flag de recurso, o laravel possui um método chamado resource() que irá gerar todas as rotas acima. Você também pode usar esse método em vez de especificá-los individualmente, como acima.
Na verdade, adicionando a seguinte linha, registramos as várias rotas para o nosso aplicativo. Podemos verificar usando o seguinte comando.


Dentro da  pasta resources >> views  , crie os seguintes arquivos de três views.

  1. create.blade.php
  2. edit.blade.php
  3. index.blade.php
Dentro da pasta views  , também precisamos criar o arquivo de layout.
Portanto, crie um arquivo dentro da  pasta views  chamada  layout.blade.php. Adicione o seguinte código dentro de um  arquivo layout.blade.php  .
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Laravel 7 CRUD</title>
  <link href="{{ asset('css/app.css') }}" rel="stylesheet" type="text/css" />
</head>
<body>
  <div class="container">
    @yield('content')
  </div>
  <script src="{{ asset('js/app.js') }}" type="text/js"></script>
</body>
</html>
Então, basicamente, este é o nosso principal arquivo de modelo, e todos os outros arquivos de exibição estenderão esse arquivo layout.blade.php.
Aqui, já incluímos o  Bootstrap 4  adicionando o  app.css.
O próximo passo seria codificar um  arquivo create.blade.php  . Portanto, escreva o seguinte código dentro dele.
@extends('layout')

@section('content')
<style>
  .uper {
    margin-top: 40px;
  }
</style>
<div class="card uper">
  <div class="card-header">
    Adicionar Dados
  </div>
  <div class="card-body">
    @if ($errors->any())
      <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
              <li>{{ $error }}</li>
            @endforeach
        </ul>
      </div><br />
    @endif
      <form method="post" action="{{ route('shows.store') }}">
          <div class="form-group">
              @csrf
              <label for="name">Nome:</label>
              <input type="text" class="form-control" name="nome"/>
          </div>
          <div class="form-group">
              <label for="price">Genero:</label>
              <input type="text" class="form-control" name="genero"/>
          </div>
          <div class="form-group">
              <label for="price">Idade:</label>
              <input type="text" class="form-control" name="idade"/>
          </div>
          <div class="form-group">
              <label for="quantity">Apelido:</label>
              <input type="text" class="form-control" name="apelido"/>
          </div>
          <button type="submit" class="btn btn-primary">Registrar</button>
      </form>
  </div>
</div>
@endsection
Ok, agora precisamos abrir o arquivo Show Controller.php e, na função create(), precisamos retornar a exibição, e esse é um  arquivo create.blade.php  .
// ShowController.php

public function create()
{
   return view('create');
}
Vá para um  http://localhost: 8000/Shows/create 
Você verá algo como o seguinte.

Etapa 6: adicionar regras de validação e salvar dados

Nesta etapa, adicionaremos uma  validação do Laravel .
Agora, a primeira etapa dentro do ShowController.php é importar o espaço para nome do modelo Show dentro do  arquivo ShowController.php .
<?php

// ShowController.php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Show;
Agora, escreva o seguinte código na função store() do arquivo  ShowController.php .
public function store(Request $request)
{
        $validatedData = $request->validate([
            'nome' => 'required|max:255',
            'genero' => 'required|max:255',
            'idade' => 'required|max:255',
            'apelido' => 'required|max:255',
        ]);
        $show = Show::create($validatedData);
   
        return redirect('/shows')->with('success', 'Dado inserido com sucesso!!');
 }
Aqui, o que fizemos foi verificar primeiro os quatro campos do formulário.
Se os dados recebidos falharem em alguma das regras, eles irão diretamente para o formulário com as mensagens de erro.
O método Store possui o objeto $request como o parâmetro que será usado para acessar os dados do formulário. 
A primeira coisa que você deseja fazer é validar uma forma de dados.
Podemos usar uma função $request-> validate() para validação, que receberá a matriz de regras de validação.
Regras de validação é uma matriz associativa.
A chave será o field_name e o valor sendo as regras de validação. 
O segundo parâmetro é a matriz opcional para mensagens de validação personalizadas.
As regras são separadas com o sinal de tubulação “|.” Estamos usando as regras de validação mais básicas  .
Primeiro é "obrigatório", o que significa que o field_name não deve estar vazio. (A regra “anulável” é vice-versa), “string” significa que deve ser o valor da string, “min” é o limite de caracteres mínimos para uma string em um campo de entrada e “max” é o máximo de caracteres. “Exclusivo: tabela, coluna” com veja se o mesmo valor não existe no banco de dados (é útil para armazenar emails ou qualquer outro dado exclusivo).
Se a validação falhar, ele nos redirecionará de volta. Após a validação, estamos criando um novo livro e salvá-lo no banco de dados.
Precisamos percorrer essas mensagens de erro dentro do  arquivo create.blade.php  que já fizemos.
Se você deixar todos os campos do formulário vazios, encontrará uma mensagem de erro como esta imagem.

Agora, se você preencher os campos do formulário corretamente, ele criará uma nova linha no banco de dados. Eu criei um novo programa.

Etapa 7: exibir os dados

Agora, precisamos escrever a função de índice ShowController para retornar uma exibição de índice com os dados buscados em um banco de dados. Escreva o seguinte código dentro da função index ().
// ShowController.php

public function index()
{
     $shows = Show::all();

     return view('index', compact('shows'));
}
Ok, agora crie um arquivo chamado  index.blade.php  dentro da  pasta views  e adicione o seguinte código.
@extends('layout')

@section('content')
<style>
  .uper {
    margin-top: 40px;
  }
</style>
<div class="uper">
  @if(session()->get('success'))
    <div class="alert alert-success">
      {{ session()->get('success') }}  
    </div><br/>
  @endif <a href="{{ route('shows.create')}}" class="btn btn-info">Inserir Registro</a>
  <br><br>
  <table class="table table-striped ">
    <thead>
        <tr>
          <td>ID</td>
          <td>Nome</td>
          <td>Genero</td>
          <td>Idade</td>
          <td>Apelido</td>
          <td colspan="2">Ações</td>
        </tr>
    </thead>
    <tbody>
        @foreach($shows as $show)
        <tr>
            <td>{{$show->id}}</td>
            <td>{{$show->nome}}</td>
            <td>{{$show->genero}}</td>
            <td>{{$show->idade}}</td>
            <td>{{$show->apelido}}</td>
     <td><a href="{{ route('shows.edit', $show->id)}}" class="btn btn-primary">Editar</a></td>
            <td>
                <form action="{{ route('shows.destroy', $show->id)}}" method="post">
                  @csrf
                  @method('DELETE')
                  <button class="btn btn-danger" type="submit">Excluir</button>
                </form>
            </td>
        </tr>
        @endforeach
    </tbody>
  </table>
<div>
@endsection
Usamos a função PHP number_format() para imprimir o valor flutuante da classificação IMDB.
Aqui, percorremos a matriz do programa e exibimos os dados no formato de tabela.
Além disso, adicionamos dois botões para  operação de edição  e  exclusão  .

Etapa 8: Criar operação de edição e atualização

Primeiro, precisamos adicionar o seguinte trecho de código na função de edição do arquivo ShowController.php .
// ShowController.php

public function edit($id)
{
     $show = Show::findOrFail($id);

     return view('edit', compact('show'));
}
Agora, crie o novo arquivo dentro da pasta views chamada  edit.blade.php  e adicione o seguinte código.
@extends('layout')

@section('content')
<style>
  .uper {
    margin-top: 40px;
  }
</style>
<div class="card uper">
  <div class="card-header">
    Atualizar dados
  </div>
  <div class="card-body">
    @if ($errors->any())
      <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
              <li>{{ $error }}</li>
            @endforeach
        </ul>
      </div><br />
    @endif<form method="post" action="{{ route('shows.update', $show->id) }}">          <div class="form-group">
              @csrf
              @method('PATCH')
              <label for="name">Nome:</label>
   <input type="text" class="form-control" name="nome" value="{{ $show->nome}}"/>
          </div>
          <div class="form-group">
              <label for="price">Genero:</label>
              <input type="text" class="form-control" name="genero" value="{{ $show->genero}}"/>
          </div>
          <div class="form-group">
              <label for="price">Idade:</label>
              <input type="text" class="form-control" name="idade" value="{{ $show->idade}}"/>
          </div>
          <div class="form-group">
              <label for="quantity">Apelido:</label>
              <input type="text" class="form-control" name="apelido" value="{{ $show->apelido}}"/>
          </div>
          <button type="submit" class="btn btn-primary">Atualizar</button>
      </form>
  </div>
</div>
@endsection
Nesse arquivo, você pode mostrar os valores de uma linha específica usando seu ID exclusivo dentro dos campos do formulário.
Então, quando você clicar neste URL:http://localhost:8000/shows/edit,  você verá algo como a imagem abaixo.


Agora, adicione o seguinte código dentro da função update() do ShowController .
// ShowController.php

public function update(Request $request, $id)
{
        $validatedData = $request->validate([
            'nome' => 'required|max:255',
            'genero' => 'required|max:255',
            'idade' => 'required|max:255',
            'apelido' => 'required|max:255',
        ]);
        Show::whereId($id)->update($validatedData);

        return redirect('/shows')->with('success', 'Dado atualizado com sucesso!');
}
Portanto, agora você pode editar e atualizar todos os dados no banco de dados com sucesso.

Etapa 9: Criar funcionalidade de exclusão

Escreva o seguinte código dentro da função de destruição do ShowController  .
// ShowController.php

public function destroy($id)
{
        $show = Show::findOrFail($id);
        $show->delete();

        return redirect('/shows')->with('success', 'Dado excluído com sucesso!');
}
Vá para o URL: http://localhost:8000/shows  e tente remover o show.
Você pode ver que você excluiu com êxito o programa.
Portanto, nosso código ShowController.php completo  é como abaixo.
<?php

// ShowController.php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Show;

class ShowController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $shows = Show::all();

        return view('index', compact('shows'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        return view('create');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $validatedData = $request->validate([
            'nome' => 'required|max:255',
            'genero' => 'required|max:255',
            'idade' => 'required|max:255',
            'apelido' => 'required|max:255',
        ]);
        $show = Show::create($validatedData);
   
        return redirect('/shows')->with('success', 'Dado inserido com sucesso!');
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        $show = Show::findOrFail($id);

        return view('edit', compact('show'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        $validatedData = $request->validate([
            'nome' => 'required|max:255',
            'genero' => 'required|max:255',
            'idade' => 'required|max:255',
            'apelido' => 'required|max:255',
        ]);
        Show::whereId($id)->update($validatedData);

        return redirect('/shows')->with('success', 'Dado atualizado com sucesso!!');
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        $show = Show::findOrFail($id);
        $show->delete();

        return redirect('/shows')->with('success', 'Dado excluído com sucesso!!');
    }
}
Portanto, concluímos um  tutorial de operações do Laravel 7 CRUD com o exemplo  do zero.

Seguidores

Views