Laravel 雄辩的词形();withTrashed()停止工作

Laravel 雄辩的词形();withTrashed()停止工作,laravel,laravel-5,eloquent,laravel-5.2,Laravel,Laravel 5,Eloquent,Laravel 5.2,我在OrderItem模型中建立了多态关系,其中saleable可以是几个不同的模型 我和其他任何关系一样建立了这种关系: public function saleable() { return $this->morphTo()->withTrashed(); } 这过去工作正常,但现在突然不起作用,并抛出错误: Call to undefined method Illuminate\Database\Query\Builder::withTrashed() 我不明白为什

我在
OrderItem
模型中建立了多态关系,其中
saleable
可以是几个不同的模型

我和其他任何关系一样建立了这种关系:

public function saleable()
{
    return $this->morphTo()->withTrashed();
}
这过去工作正常,但现在突然不起作用,并抛出错误:

Call to undefined method Illuminate\Database\Query\Builder::withTrashed()
我不明白为什么它会停止工作,可能是因为作曲家的更新可能已经更新了Laravel。我在v5.2.35上。你知道为什么它会停止工作吗?我还有什么其他的解决办法

更新


适用于v5.2.33及更早版本。可能是一个bug,我已经

我唯一能想象的是,你删除了对象的SoftDelete特性,因此不再加载它,或者你添加了不从父对象继承的
boot
方法(因此它不会从该特性加载适当的方法)

编辑

这似乎是v5.2.34中引入的一个bug。这似乎是固定在这个公关

编辑


现在应该把它修好。v5.2.36已经发布。

我仔细研究了代码并找到了解决方案!此解决方案适用于我的问题,其中一些模型可以软删除,而其他模型则不能

使用Illumb\Database\Elount\SoftDeletingScope;
//...
公共函数mySometimesSoftDeletableRelation(){
返回$this->morpto()->不带GlobalScope(SoftDeletingScope::class);
}

在其核心,
withTrashed
使用
unset
,它不关心是否正在取消未设置的内容,因此这将删除那些拥有它的模型上的SoftDeletingScope,而对其他模型不做任何事。

感谢您的回复。每个
saleable
型号都有软删除跟踪,我不需要在实际的
OrderItem
本身上有软删除跟踪,因为它不相关。我也没有在模型中添加
boot
方法。@Wasim在更新到最新版本之前,您是否更改了任何代码?你还记得更新之前你使用的是什么版本的5.2吗?老实说,我已经有一段时间没有测试过这些代码了,所以我不确定。让我回滚laravel框架版本,看看是否可以让它工作,直到它与版本5.2.34中断。适用于5.2.33及更早版本。“我看不到这会在没有通知的情况下被删除,所以我想这一定是一个bug?”Wasim我想你是对的。这是一只虫子。当您查看5.2.34的changelog时,您将看到“在使用即时加载时将约束应用于变形到关系”。可能已经在这里修复了:但它还没有作为5.2.36发布。您的问题帮助我解决了我的问题。需要抓住多态性中的垃圾模型。格雷西亚斯!