从相关模型中获取 ID laravel

Get ids from related model laravel

我在两个对象 TagPost 之间设置了多对多关系。 现在,我必须检查复选框列表中 post 的标签,如下所示:

//Load all possible tags in the controller
//and send it to view
$allTags = \App\Tag::all();
return view('post.edit')->with('allTags');

在视图中:

@foreach($allTags as $tag)
    <input type="checkbox" name="tags[]" value="{{ $tag->id }}"/>
    {{ $tag->description }}
@endforeach

现在,当用户重新加载页面时,我必须选中那些复选框。

我的问题是:

这当然有效,但对我来说似乎矫枉过正

$relatedTags = [];
foreach($post->tags as $tag){
    $relatedTags[]= $tag->id;
}

有没有办法只获取 ID 而无需加载所有这些对象?

类似于:$relatedTags = $post->tags()->ids ?

使用它只会获取您需要的 ID 和描述。

$allTags = DB::table('tags')->lists('description', 'id');

您可以尝试这样查询结果:

$relatedTagIds = $post->tags()->select('id')->get()->pluck('id')->toArray();

这就是您获得清晰的标签 ID 列表的方式。

感谢 Filip 的回答,我找到了另一种可能的解决方案。

$post->tags->pluck('id')->toArray();

希望有人觉得有用