根据语言在文章中显示标签?

时间:2016-11-29 09:37:11

标签: laravel laravel-5 laravel-5.2

这是我的关系:

文章:

  public function tags(){
        return $this->hasMany('App\Models\ATags', 'language_id');
    }

语言:

foreach($languages as $language){
        $tags[] = $language->tags;
      }

在这里,我获得了特定语言的所有标签。我现在想要显示该特定文章的所有语言标签。

$tags1 = $tags->whereHas('articles', function ($query) {
        $query->where('id', '=', $article_id);
      })->get();

有任何建议我该怎么做?

我尝试了这个但是我收到了错误

 public function edit($article_id){


      $user = $this->user;
      $languages = $this->languages;
      $article = Articles::findOrFail($article_id);
      $article_trans = $article->translations;
      foreach($languages as $language){
        $tags = $language->tags;
      }

      $tags1 = $tags->whereHas('articles', function ($query) {
        $query->where('id', '=', $article_id);
      })->get();
    }

我有两种语言,我想要的是为这两种语言添加标签。

这是我的控制者:

  <div class="col-md-12 col-sm-12 col-xs-12">
    <div class="form-group">
       <label class="form_title">ARTICLE TAGS</label>

 <input type="text" name="tags[{{$article_tran->language->code }}]" class="form-control tokenfield" value="{{ $user_tags }}" />
 </div>

这是标签的视图:

var paths = xdoc.Descendants("photos").Elements("path").Select(p => p.Value);

1 个答案:

答案 0 :(得分:2)

假设您的ATag模型具有关系belongsToMany定义为文章,那么您的距离似乎没有得到article_id的值。

public function edit($article_id){

      $user = $this->user;
      $languages = $this->languages;
      $article = Articles::findOrFail($article_id);
      $article_trans = $article->translations;
      $tags = [];
      foreach($languages as $language){
        //because of loop take array of tags
        $tags[] = $language->tags()->whereHas('articles', function($query) use($article_id){
             $query->where('id', '=', $article_id);
        })->get();
      }
 }

考虑使用($ article_id)whereHas closure和whereHas在调用$ language-&gt;标签时不能使用集合,这些标签返回集合而不是构建器 您还在ATag模型中正确定义了文章关系吗?