删除()上的 Laravel BadMethodCallException

Posted

技术标签:

【中文标题】删除()上的 Laravel BadMethodCallException【英文标题】:Laravel BadMethodCallException on delete() 【发布时间】:2021-12-29 05:28:59 【问题描述】:

无法对 find() 执行删除,

BadMethodCallException 调用未定义的方法 App\Models\Task::ondeletemodel().

但是当使用它的工作时。

    public function delete($id)
    
            Task::find($id)->delete(); //error
            // Task::where('id', $id)->delete(); //not error 
            session()->flash('message', 'Task Deleted Successfully.');
    

已编辑:这是我的 uuid 特征: php

namespace App\Http\Traits;

use Facades\Str;

trait UseUuid

    protected static function boot()
    
        parent::boot();

        static::creating(function ($model) 
            $model->uuid = unique_str($model);
        );

        static::deleting(function ($model) 
        
            $model->ondeletemodel($model);
        );
    

【问题讨论】:

请您出示您的Task 型号以及您为其设置的任何Observers 的代码。 请你也展示一下UseUuid trait 中发生了什么。您是否为此模型设置了Observer 【参考方案1】:

如错误消息中所示:

use App\Http\Traits\UseUuid 中,您可能已经定义了一个要在ondeletemodel 上触发的侦听器,但在特征或任务模型中没有这样命名的方法

【讨论】:

我已经编辑了我的问题。我认为这是 boot() 中的 static::deleting 你可以摆脱整个 static::deleting 块,因为它什么都不做 谢谢我会努力的 @juniorFrogie 你试过了吗? 是的,删除后它现在可以工作了。【参考方案2】:
$tasks = Task::find($id);
$task->users->detach();
$tasks->delete();
session()->flash('message', 'Task Deleted Successfully.');

【讨论】:

请添加一些关于问题所在以及此代码如何解决问题的说明。

以上是关于删除()上的 Laravel BadMethodCallException的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.5 模型上的自定义软删除

laravel 自动删除 php artisan serve 上的 server.php

从 laravel 刀片上的字符串中删除 HTML 标签

新鲜的 Laravel 安装删除了工匠服务上的 server.php

用于删除sql行的按钮:Laravel 5.4上的BadMethodCallException

实习日记 laravel怎么删除磁盘上的文件