删除()上的 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 自动删除 php artisan serve 上的 server.php
新鲜的 Laravel 安装删除了工匠服务上的 server.php