Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

wuschelino22's avatar

Update with CRUD

Hallo, i want to Update my SQL Databade via CRUD (Update)

This is my Controller:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use View;
use App\Url;
use App\Categorie;


class ShareController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $shares = Url::all();
        $categories = Categorie::all();

        return view('index', compact('shares', 'categories'));

        //**Holt alle benötigten Daten für die Indexseite aus den beiden Datenbanken */
}


    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        $categories = Categorie::all();
    
        return view('create', compact('categories'));
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {

             $share = new Url([
            'name' => $request->get('name'),
            'urls'=> $request->get('urls'),
            'categorie_id'=> $request->get('categorie_id')
          ]);
          $share->save();
          return back();
    }

    /**
     * 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)

    {
       
        $shares = Url::findOrFail($id);
        $categories = Categorie::get();  

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

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
     
      $share = Url::find($id)([
            'name' => $request->get('name'),
            'urls'=> $request->get('urls'),
            'categorie_id'=> $request->get('categorie_id')
          ]);
          $share->save();
          return back();
             

    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }

    public function search(Request $request)
    {
 

    $urls = Url::where('name', $request->get('search'))
    ->orWhere('name', 'like', '%' . $request->get('search') . '%')->get();

    $shares = $urls;

    $categories = Categorie::whereIn('id', $shares->pluck('categorie_id'))->get();

    return view('index', compact('shares', 'categories'));


    }

    
}



And this is my EditBlade

@extends('layout')

@section('content')




<div class="panel panel-default">
      <div class="panel-heading">
      
      </div>
      <div class="panel-body">
    <form class="form-horizontal" role="form" method="POST" action="{{ route('shares.update', $shares->id) }}">
    @csrf
       
    <fieldset>
            <div class="form-group">
            <label for="firstname" class="col-md-2 control-label">Name:</label>

            <div class="col-md-10">
              <input type="text" class="form-control" value="{{ $shares->name }}" name="name" placeholder="First Name">
            </div>
          </div>

          <div class="form-group">
            <label for="lastname" class="col-md-2 control-label">Url:</label>

            <div class="col-md-10">
              <input type="text" class="form-control" value="{{ $shares->urls }}" name="urls" placeholder="Last Name">
            </div>
          </div>
          <button type="POST" class="btn btn-primary" action="{{ route('shares.update', $shares->id) }}">Update</button>


      </form>
     </div>
    </div>
  </div>

And this my web.php

Route::resource('shares', 'ShareController');

Route::get('create', 'ShareController@create');

Route::get('/', 'ShareController@index');

Route::post('search', 'ShareController@search');

Route::get('edit/{id}', 'ShareController@edit');

Route::get('update', 'ShareController@update');

I get the follow Error Message what do i wrong ?

Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException The POST method is not supported for this route. Supported methods: GET, HEAD, PUT, PATCH, DELETE.

Thank you very much

0 likes
7 replies
YeZawHein's avatar
Route::resource('shares', 'ShareController');

That is already created 7 routes.Read to Laravel documentation.Check with

php artisan route:list

By the way

Route::get('update', 'ShareController@update');

Update method shouldn't use with get and will get error.

Respect's avatar
// Use This
    public function update(Request $request, $id)
    {
     
      $share = Url::find($id)->update([
            'name' => $request->get('name'),
            'urls'=> $request->get('urls'),
            'categorie_id'=> $request->get('categorie_id')
          ]);
          
          return back();
             

    }

// OR THIS 
// Use This
    public function update(Request $request, $id)
    {
     
      $share = Url::find($id);
    $share->name = $request->get('name'),
         $share->urls= $request->get('urls'),
          $share->categorie_id= $request->get('categorie_id')
          ]);
          $share->save();
          return back();
             

    }



wuschelino22's avatar
+--------+-----------+----------------------+----------------+------------------
-----------------------------------+--------------+
| Domain | Method    | URI                  | Name           | Action
                                   | Middleware   |
+--------+-----------+----------------------+----------------+------------------
-----------------------------------+--------------+
|        | GET|HEAD  | /                    |                | App\Http\Controll
ers\ShareController@index          | web          |
|        | GET|HEAD  | api/user             |                | Closure
                                   | api,auth:api |
|        | GET|HEAD  | create               |                | App\Http\Controll
ers\ShareController@create         | web          |
|        | GET|HEAD  | edit/{id}            |                | App\Http\Controll
ers\ShareController@edit           | web          |
|        | POST      | search               |                | App\Http\Controll
ers\ShareController@search         | web          |
|        | GET|HEAD  | shares               | shares.index   | App\Http\Controll
ers\ShareController@index          | web          |
|        | POST      | shares               | shares.store   | App\Http\Controll
ers\ShareController@store          | web          |
|        | GET|HEAD  | shares/create        | shares.create  | App\Http\Controll
ers\ShareController@create         | web          |
|        | GET|HEAD  | shares/{share}       | shares.show    | App\Http\Controll
ers\ShareController@show           | web          |
|        | PUT|PATCH | shares/{share}       | shares.update  | App\Http\Controll
ers\ShareController@update         | web          |
|        | DELETE    | shares/{share}       | shares.destroy | App\Http\Controll
ers\ShareController@destroy        | web          |
|        | GET|HEAD  | shares/{share}/edit  | shares.edit    | App\Http\Controll
ers\ShareController@edit           | web          |
|        | GET|HEAD  | update               | update.index   | App\Http\Controll
ers\ShareController@update@index   | web          |
|        | POST      | update               | update.store   | App\Http\Controll
ers\ShareController@update@store   | web          |
|        | GET|HEAD  | update/create        | update.create  | App\Http\Controll
ers\ShareController@update@create  | web          |
|        | GET|HEAD  | update/{update}      | update.show    | App\Http\Controll
ers\ShareController@update@show    | web          |
|        | PUT|PATCH | update/{update}      | update.update  | App\Http\Controll
ers\ShareController@update@update  | web          |
|        | DELETE    | update/{update}      | update.destroy | App\Http\Controll
ers\ShareController@update@destroy | web          |
|        | GET|HEAD  | update/{update}/edit | update.edit    | App\Http\Controll
ers\ShareController@update@edit    | web          |
+--------+-----------+----------------------+----------------+------------------
-----------------------------------+--------------+

This is the output, it doesnt work so far.

bobbybouwmann's avatar

So first of all it took me a lot of time to understand this. You have a ShareController, but you use the model Url...

Anyway! When updating you need to make sure you add the route for PATCH or PUT. Next to that you need to make sure you update your model correctly!

// view

<form class="form-horizontal" role="form" method="POST" action="{{ route('shares.update', $shares->id) }}">
    @method('PATCH')
    @csrf
        
    Your form here  

</form>

And then in your controller you can do this

// controller

public function update(Request $request, $id)
{
    $share = Url::find($id);

    $share->update([
        'name' => $request->get('name'),
        'urls' => $request->get('urls'),
        'categorie_id' => $request->get('categorie_id'),
    ]);

    return redirect()->route('shares.index');
}

Let me know if this makes any sense to you!

Snapey's avatar

We could go on throwing out tips, but really you need to watch some tutorials.

There are plenty out there - especially for basic concepts.

Please or to participate in this conversation.