从相关模型中获取 ID laravel
Get ids from related model laravel
我在两个对象 Tag
和 Post
之间设置了多对多关系。
现在,我必须检查复选框列表中 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();
希望有人觉得有用
我在两个对象 Tag
和 Post
之间设置了多对多关系。
现在,我必须检查复选框列表中 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();
希望有人觉得有用