从belongsToMany关系获取相关ID数组 - Laravel 5.4

Pet*_*ter 3 php laravel laravel-5 laravel-5.4

我有这个解决方案在Laravel 5.3中运行良好

$procedure = Procedure::findOrFail($id);
$attached_stages = $procedure->stages()->getRelatedIds()->toArray();
Run Code Online (Sandbox Code Playgroud)

在我的Procedure模型中:

public function stages()
{

    return $this->belongsToMany('App\Models\Stage', 'procedure_stage', 'procedure_id', 'stage_id')->withPivot('id','status')->withTimestamps();
}
Run Code Online (Sandbox Code Playgroud)

现在,在迁移到Laravel 5.4后,我收到此错误:

Call to undefined method Illuminate\Database\Query\Builder::getRelatedIds()
Run Code Online (Sandbox Code Playgroud)

似乎getRelatedIds已被删除.

我的问题:

如何在5.4中获取数组?

先感谢您.

Ord*_*aad 7

要获取id数组,可以使用pluck函数

$procedure->stages()->pluck('stages.id')->toArray();
Run Code Online (Sandbox Code Playgroud)


Gab*_*Mic 7

它已被删除(基本上,更改名称,仅此而已)从5.4,但你有另一个名称,因为我看起来深入belongToMany.php文件.使用它并且它应该非常好用.

$attached_stages = $procedure->stages()->allRelatedIds()->toArray();
Run Code Online (Sandbox Code Playgroud)

希望这能帮到你,以及将来会遇到这个问题的其他人,并看看这篇文章.