我在两个对象 Tag
和 Post
之间设置了多对多关系。
现在,我必须检查复选框列表中的帖子标签,如下所示:
//Load all possible tags in the controller
//and send it to view
$allTags = \App\Tag::all();
return view('post.edit')->with('allTags');
在 View 中:
@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
?
最佳答案
您可以尝试这样查询结果:
$relatedTagIds = $post->tags()->select('id')->get()->pluck('id')->toArray();
这就是您获得清晰的标签 ID 列表的方式。
关于php - 从相关模型 laravel 获取 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37036583/