Laravel:调用未定义的方法Illumb\Database\Query\Builder::detach()

Laravel:调用未定义的方法Illumb\Database\Query\Builder::detach(),laravel,eloquent,Laravel,Eloquent,我正在尝试删除一个对象模型Studio,该对象模型hasManymodelMember和hasManymodelGame并在删除后为其hasMany模型设置行为,想法是将成员和游戏模型studio\u id属性更改为默认的studio对象,换句话说,当studio所属的studio被删除时,将其附加的studio更改为另一个 下面是尝试这样做的代码 $studio = Studio::find(Input::get('id')); $games = $studio->games; $mem

我正在尝试删除一个对象模型
Studio
,该对象模型
hasMany
model
Member
hasMany
model
Game
并在删除后为其
hasMany
模型设置行为,想法是将
成员
游戏
模型studio\u id属性更改为默认的
studio
对象,换句话说,当
studio
所属的
studio
被删除时,将其附加的
studio
更改为另一个

下面是尝试这样做的代码

$studio = Studio::find(Input::get('id'));
$games = $studio->games;
$members = $studio->members;
$merged_collection = $games->merge($members);

$merged_collection->each(function($item){
   global $studio;
   $item->studio()->detach($studio);
   $defStudio = Studio::find('5');
   $item->studio()->associate($defStudio);
   $item->save();
});

$studio->delete();
博弈模型和成员模型都有这种方法

public function studio(){
    return $this->belongsTo('Studio');
}
所有列的名称都正确,我能够检索与studio关联的所有游戏,游戏也是如此,反之亦然,但是当我在进行验证后尝试执行代码时,否则就会出现错误

Call to undefined method Illuminate\Database\Query\Builder::detach()
我认为我尝试使用方法
detach()
的项可能不是对象实例,但正如我所理解的,每当我使用
$collection->each(function($object){})
时,我都会检索集合中的对象实例

我将感谢任何形式的指导或帮助。
谢谢。

detach()
belongTomany
方法。您需要的是
解离()
谢谢@deczo!在我正在阅读的关于Laravel的书中没有提到,但是我在dissection()中遇到了与未定义方法相同的错误,可能您使用的是旧版本的框架。这种方法很新。您也可以使用
$item->studio\u id=null@deczo解决了这个问题。这很奇怪,因为我使用的版本大约有一个月了,谢谢。@Pathros没有这样的方法,对关系的对应项调用
dissection
,或者简单地设置
$related->FOREIGN\u KEY=null
并保存