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

Getting array of related IDs from a belongsToMany relation - Laravel 5.4

我有 this 解决方案在 Laravel 5.3

中运行良好
$procedure = Procedure::findOrFail($id);
$attached_stages = $procedure->stages()->getRelatedIds()->toArray();

在我的 Procedure 模型中:

public function stages()
{

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

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

Call to undefined method Illuminate\Database\Query\Builder::getRelatedIds()

似乎 getRelatedIds 已被删除。

我的问题:

如何获取5.4中的数组?

提前致谢。

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

$procedure->stages()->pluck('stages.id')->toArray();

它已从 5.4 中删除(基本上,只是更改了名称,仅此而已),但是当我在 belongToMany.php 文件的深处查看时,您使用的是另一个名称。用这个 它应该工作得很好。

$attached_stages = $procedure->stages()->allRelatedIds()->toArray();

希望这对您以及将来会遇到该问题并查看本文的其他人有所帮助 post。

可能对 Laravel 5.1:

的用户有用
$procedure->stages()->getQuery()->lists('stage_id')->toArray();

$procedure->stages()->getQuery()->pluck('stage_id')->toArray();

这是IDE友好代码版本。 :)