我在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中获取数组?
提前谢谢。
答案 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友好的代码版本。 :)