2016-11-29 5 views
1

は、これが私の関係です:記事のタグを言語に基づいて表示しますか?

記事:

public function tags(){ 
     return $this->belongsToMany('App\Models\ATags', 'article_tags','article_id', 'article_tag_id'); 
    } 

言語:ここ

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(); 

私は2つの言語を持っている、と何イム取得しようとしているが、その二つの言語のタグを持つことになってしまいます。

これは私のコントローラです:

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> 

+0

「言語に基づいて」ということをもう少し説明できますか?結果として何を得ることが期待されているのですか?これまでに何を試しましたか? – TheFallen

+0

データを返すControllerのコードはどこですか? –

+0

通常の投稿、なぜlaravel login/registrationを使用しているのですか? – None

答えて

2

は、あなたの近くには、あなたのATAGモデルが関係を持っていると仮定するとのarticle_idの値を取得していないようだbelongsToMany記事として定義される。

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(); 
     } 
} 

はまた、あなたがATAGで正しく記事の関係を定義していますが、コレクションを返す$、言語>タグを呼び出すとき をビルダーではないコレクションでは動作しませんwhereHas閉鎖とwhereHasでの使用($ののarticle_idを)考えますモデル?

関連する問題