Laravel 删除数据包中的 1 个密钥但没有反馈和更改

Laravel delete 1 key in paket but no feedback and changes

我有 2 个模型:

    class Penghuni extends Model
{
    use SoftDeletes;

    protected $fillable = [
        'nama_penghuni', 'email', 'phone', 'tower',
        'no_unit'
    ];

    protected $guarded = [];

    public function penghunis() {

        return $this->hasMany(Penghuni::class);
    }
}

class Packet extends Model
{
    use SoftDeletes;

    protected $fillable = [
        'name', 'tanggal_masuk', 'tanggal_keluar', 'penerima', 'email', 'phone', 'no_unit', 'penghuni_id'
    ];

    public function penghuni() {
        
        return $this->belongsTo(Penghuni::class);
    }
}

当我想进行软删除时,deleted_at 列值没有更新,但由于我的控制器成功而被重定向。这是我的控制器:

public function destroy(Packet $packet)
    {
        $packet->delete();

        session()->flash('success', 'Delete Packet Berhasil');

        return redirect(route('paket.index'));
    }

我删除的时候没有变化,我的按钮是:

<a href="javascript:$('#delete_paket{{ $paket->id }}').submit();" class="btn btn-danger" onclick="return confirm('Anda yakin ingin menghapus data paket {{ $paket->name }}?');">Delete</a>
                                                <form action="{{ route('paket.destroy', $paket->id) }}" method="POST" id="delete_paket{{ $paket->id }}">
                                                    @csrf
                                                    @method('DELETE')
                                                    <button type="submit" class="btn btn-danger" hidden>Delete</button>
                                                </form>

您的路由参数可能 paket 而不是 packet。更改您的方法签名,使参数名称与路由参数名称匹配:

public function destroy(Packet $paket)

如果这不匹配,那么 Laravel 只是认为您需要依赖注入而不是路由模型绑定。因此,您目前正在获取一个新的模型实例(非现有模型实例)而不是您的模型绑定(现有模型实例)。

您可以运行 php artisan route:list查看路由参数的名称。

将您的 $packet 更改为单数形式的路线名称,但由于您使用的不是英语,因此请使用您的路线名称:

public function destroy(Packet $paket)

不在方法 arg 中使用模型的另一种方法:

public function destroy($id)
    {
        $packet = Packet::find($id)
        $packet->delete();

        session()->flash('success', 'Delete Packet Berhasil');

        return redirect(route('paket.index'));
    }