【问题标题】:Laravel can't Delete data, it can enter on destroy() function but it parameter return nullLaravel 无法删除数据,它可以进入 destroy() 函数但它的参数返回 null
【发布时间】:2023-01-10 16:28:24
【问题描述】:

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

控制器 :

    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>

模型 :

<?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 但结果为空

【问题讨论】:

    标签: php laravel crud laravel-9


    【解决方案1】:

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

    1. 您的型号名称必须是单数,以便绿色的
    2. 资源应该是Route::resource('greens', GreensController::class);
      public function destroy(Green $green)
      {
         $green->delete();
         return redirect('/greens');
      }
      

    【讨论】:

    • 它仍然没有删除数据并仍然返回视图
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-24
      • 2021-05-27
      • 1970-01-01
      • 2019-12-13
      • 2021-07-07
      • 1970-01-01
      • 2021-12-15
      • 2021-10-02
      相关资源
      最近更新 更多