Junjie Laravel CRUD App

in #laravel27 days ago
  • fresh laravel application:

    composer create-project --prefer-dist laravel/laravel blog


  • modify .env:

    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=here your database name(blog)
    DB_USERNAME=here database username(root)
    DB_PASSWORD=here database password(root)


  • create migration "products" table:

    php artisan make:migration create_products_table --create=products


  • in database/migration/create_products_tabke.php add:

    $table->string('name');
        $table->text('detail');
    

  • run this:

    php artisan migrate


  • in route/web.php add this:

    use App\Http\Controllers\ProductController;

    Route::resource('products', ProductController::class);


  • Add Controller and Model:

    php artisan make:controller ProductController --resource --model=Product


  • app/Http/Controllers/ProductController.php put this code:

    <?php

    namespace App\Http\Controllers;

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

    class ProductController extends Controller
    {
    /**
    * Display a listing of the resource.
    *
    * @return \Illuminate\Http\Response
    */
    public function index()
    {
    $products = Product::latest()->paginate(5);

      return view('products.index',compact('products'))
          ->with('i', (request()->input('page', 1) - 1) * 5);
      }
    
      /**
       * Show the form for creating a new resource.
       *
       * @return \Illuminate\Http\Response
       */
      public function create()
      {
      return view('products.create');
      }
    
      /**
       * Store a newly created resource in storage.
       *
       * @param  \Illuminate\Http\Request  $request
       * @return \Illuminate\Http\Response
       */
      public function store(Request $request)
      {
      $request->validate([
          'name' => 'required',
          'detail' => 'required',
      ]);
      
      Product::create($request->all());
       
      return redirect()->route('products.index')
                      ->with('success','Product created successfully.');
      }
    
      /**
       * Display the specified resource.
       *
       * @param  \App\Models\Product  $product
       * @return \Illuminate\Http\Response
       */
      public function show(Product $product)
      {
      return view('products.show',compact('product'));
      }
    
      /**
       * Show the form for editing the specified resource.
       *
       * @param  \App\Models\Product  $product
       * @return \Illuminate\Http\Response
       */
      public function edit(Product $product)
      {
      return view('products.edit',compact('product'));
      }
    
      /**
       * Update the specified resource in storage.
       *
       * @param  \Illuminate\Http\Request  $request
       * @param  \App\Models\Product  $product
       * @return \Illuminate\Http\Response
       */
      public function update(Request $request, Product $product)
      {
      $request->validate([
          'name' => 'required',
          'detail' => 'required',
      ]);
      
      $product->update($request->all());
      
      return redirect()->route('products.index')
                      ->with('success','Product updated successfully');
      }
    
      /**
       * Remove the specified resource from storage.
       *
       * @param  \App\Models\Product  $product
       * @return \Illuminate\Http\Response
       */
      public function destroy(Product $product)
      {
      $product->delete();
      
      return redirect()->route('products.index')
                      ->with('success','Product deleted successfully');
      }
    

    }


  • app/Models/Product.php put this code:

    <?php

    namespace App\Models;

    use Illuminate\Database\Eloquent\Factories\HasFactory;
    use Illuminate\Database\Eloquent\Model;

    class Product extends Model
    {
    use HasFactory;

      protected $fillable = [
      'name', 'detail'
      ];
    

    }


  • create layout file and then create new folder "products" then create blade files:

    1. layout.blade.php

    2. index.blade.php

    3. create.blade.php

    4. edit.blade.php



  • resources/views/products/index.blade.php:

    @extends('products.layout')

    @section('content')




    Laravel 8 CRUD Example from scratch - ItSolutionStuff.com





      @if ($message = Session::get('success'))
      <div class="alert alert-success">
          <p>{{ $message }}</p>
      </div>
      @endif
     
      <table class="table table-bordered">
      <tr>
          <th>No</th>
          <th>Name</th>
          <th>Details</th>
          <th width="280px">Action</th>
      </tr>
      @foreach ($products as $product)
      <tr>
          <td>{{ ++$i }}</td>
          <td>{{ $product->name }}</td>
          <td>{{ $product->detail }}</td>
          <td>
              form action="{{ route('products.destroy',$product->id) }}" method="POST"
     
                  <a class="btn btn-info" href="{{ route('products.show',$product->id) }}">Show</a>
      
                  <a class="btn btn-primary" href="{{ route('products.edit',$product->id) }}">Edit</a>
     
                  @csrf
                  @method('DELETE')
        
                  <button type="submit" class="btn btn-danger">Delete</button>
              /form
          </td>
      </tr>
      @endforeach
      </table>
    
      {!! $products->links() !!}
    

    @endsection


  • resources/views/products/create.blade.php:

    @extends('products.layout')

    @section('content')




    Add New Product





    @if ($errors->any())


    Whoops! There were some problems with your input.




    @endif

    form action="{{ route('products.store') }}" method="POST"
    @csrf

       <div class="row">
      <div class="col-xs-12 col-sm-12 col-md-12">
          <div class="form-group">
              <strong>Name:</strong>
              <input type="text" name="name" class="form-control" placeholder="Name">
          </div>
      </div>
      <div class="col-xs-12 col-sm-12 col-md-12">
          <div class="form-group">
              <strong>Detail:</strong>
              <textarea class="form-control" style="height:150px" name="detail" placeholder="Detail"></textarea>
          </div>
      </div>
      <div class="col-xs-12 col-sm-12 col-md-12 text-center">
              <button type="submit" class="btn btn-primary">Submit</button>
      </div>
      </div>
    

    /form
    @endsection


  • resources/views/products/edit.blade.php:

    @extends('products.layout')

    @section('content')




    Edit Product





      @if ($errors->any())
      <div class="alert alert-danger">
          <strong>Whoops!</strong> There were some problems with your input.<br><br>
          <ul>
              @foreach ($errors->all() as $error)
                  <li>{{ $error }}</li>
              @endforeach
          </ul>
      </div>
      @endif
    
      form action="{{ route('products.update',$product->id) }}" method="POST"
      @csrf
      @method('PUT')
     
       <div class="row">
          <div class="col-xs-12 col-sm-12 col-md-12">
              <div class="form-group">
                  <strong>Name:</strong>
                  <input type="text" name="name" value="{{ $product->name }}" class="form-control" placeholder="Name">
              </div>
          </div>
          <div class="col-xs-12 col-sm-12 col-md-12">
              <div class="form-group">
                  <strong>Detail:</strong>
                  <textarea class="form-control" style="height:150px" name="detail" placeholder="Detail">{{ $product->detail }}</textarea>
              </div>
          </div>
          <div class="col-xs-12 col-sm-12 col-md-12 text-center">
            <button type="submit" class="btn btn-primary">Submit</button>
          </div>
      </div>
     
      /form
    

    @endsection


  • resources/views/products/show.blade.php:

    @extends('products.layout')

    @section('content')




    Show Product





      <div class="row">
      <div class="col-xs-12 col-sm-12 col-md-12">
          <div class="form-group">
              <strong>Name:</strong>
              {{ $product->name }}
          </div>
      </div>
      <div class="col-xs-12 col-sm-12 col-md-12">
          <div class="form-group">
              <strong>Details:</strong>
              {{ $product->detail }}
          </div>
      </div>
      </div>
    

    @endsection


  • Now we are ready to run our crud application

    php artisan serve



Coin Marketplace

STEEM 0.15
TRX 0.12
JST 0.026
BTC 56787.81
ETH 2507.96
USDT 1.00
SBD 2.24