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

时间:2017-02-05 14:27:11

标签: php laravel laravel-5 laravel-5.4

我在Laravel 5.3中有this解决方案正常运行

$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中获取数组?

提前谢谢。

3 个答案:

答案 0 :(得分:7)

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

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

希望这有助于你,以及将来会遇到这个问题的其他人,并看看这篇文章。

答案 1 :(得分:5)

获取ids数组你可以使用pluck函数

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

答案 2 :(得分:0)

可能对Laravel 5.1上的用户有用:

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

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

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