【问题标题】:Laravel 4.1 working with many-to-many relationshipsLaravel 4.1 处理多对多关系
【发布时间】:2014-03-02 21:56:34
【问题描述】:

我有一个具有以下功能的 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"

【问题讨论】:

  • 你是否需要为帖子只有标签的标签添加checked="checked"
  • 我不确定你的意思。只有什么?
  • 我的意思是在for循环期间,如果帖子有标签放置checked="checked"

标签: php laravel laravel-4 eloquent


【解决方案1】:

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

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

所以,基本上,如果PostTags 集合包含Tag 的id,则复选框将被选中。

【讨论】:

  • 像魅力一样工作。谢谢!
猜你喜欢
  • 1970-01-01
  • 2014-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-02
相关资源
最近更新 更多