繁体   English   中英

Laravel 不能删除数据,可以进入destroy() function 但参数返回null

[英]Laravel can't Delete data, it can enter on destroy() function but it parameter return null

所以我尝试使用资源路由删除 laravel 上的数据。 但数据仍然存在并仍然返回 function。我还尝试从 destroy() 参数中删除 Greens,它使 $greens 包含“id”。 但是,我仍然希望将 destroy() 参数保持为 (Greens $greens),而不仅仅是 ($greens)

Controller:

    public function destroy(Greens $greens)
    {
        //dd($greens->id);
        Greens::destroy($greens->id);
        return redirect('/greens');
    }

形式:

<!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>Document</title>
</head>

<body>


    <table>
        @foreach ($data as $d)
        <tr>
            <td>
                {{$d['brand']}}
            </td>
            <td>
                <form action="/greens/{{$d['id']}}" method="POST">
                    @method('DELETE')
                    @csrf
                    <button>Delete</button>
                </form>
            </td>
        </tr>
        @endforeach
    </table>


</body>

</html>

Model:

<?php

namespace App\Models;

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

class Greens extends Model
{
    use HasFactory;
    protected $primaryKey = 'id';
}

路线:

<?php

use App\Http\Controllers\GreensController;
use Illuminate\Support\Facades\Route;

Route::get('/', function () {
    return view('welcome');
});
Route::resource('/greens', GreensController::class);

我尝试 var_dump $greens->id 但结果是 null

您可以简单地执行以下操作:

  1. 你的 model 名字需要是单数所以绿色
  2. 对于资源,它应该是Route::resource('greens', GreensController::class);

public function destroy($id)
{
   Green::find($id)->delete();
   return redirect('/greens');
}

在表格中:

<form action="/greens/{{ $d->id }}" method="POST">
   @method('DELETE')
   @csrf
   <input type="submit" value="Delete" />
</form>

当你使用 Laravel 路由资源时,有一个格式你应该遵循,参考这个链接: https://laravel.com/docs/9.x/controllers#actions-handled-by-resource-controller

我可以在这里看到你的destroy function $greens是复数形式,你应该使用单数形式$green

public function destroy(Greens $green)
{
    Greens::destroy($green->id);
    return redirect('/greens');
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM