从相关模型laravel获取ID

时间:2016-05-04 19:39:12

标签: php laravel eloquent relationship

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

//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

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

我的问题是:

这肯定有用,但对我来说似乎 overkill

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

有没有办法只获取id而不加载所有这些对象?

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

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

您可以尝试查询结果:

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

这就是你如何获得清晰的标签ID列表。

答案 2 :(得分:0)

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

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

我希望有人发现它有用