Laravel 4.1与多对多关系一起工作

时间:2014-02-27 16:29:38

标签: php laravel laravel-4 eloquent

我有一个具有以下功能的Post模型:

public function tags() {

    return $this->belongsToMany('Tag', 'refs', 'post', 'tag');

}

具有类似功能的Tag模型:

public function posts() {

    return $this->belongsToMany('Post', 'refs', 'tag', 'post');

}

现在我在foreach循环中输出我的标签作为复选框。我当时感兴趣的是检查与我在给定视图中使用的Post模型相关的标签对应的框,但直觉并没有为我解决问题,我不知道足够的技术术语,以便在Google上为答案制定正确的搜索查询。

编辑:

如果相关,这是我的foreach循环:

    @foreach($tags as $tag)
        <tr>
        <td><label for="{{ $tag->id }}">{{ $tag->title }}</label></td>
        <td><input type="checkbox" value="{{ $tag->id }}" name="tags[]" id="{{ $tag->id }}" /></td>
        </tr>
    @endforeach

完美无缺。我只需要弄清楚我的if语句应该是什么用于在正确的循环中在输入标记的末尾输出以下内容。

checked="checked"

1 个答案:

答案 0 :(得分:4)

听起来你想要这样的东西:

<input type="checkbox" value="{{ $tag->id }}" name="tags[]" id="{{ $tag->id }}" @if ($post->tags->contains($tag->id)) checked="checked" @endif />

所以,基本上,如果Post的{​​{1}} s集合包含Tag的ID,则会选中该复选框。