Junjie Laravel CRUD App

in laravel •  7 months 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



Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!