2016-11-29 32 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(); 

我有兩種語言,什麼即時試圖得到的是有針對兩種語言的標籤。

這是我的控制器:

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登錄/註冊這一點很重要? – None

回答

2

看來你更接近是沒有得到的article_id的價值假設你ATAG模型關係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(); 
     } 
} 

考慮whereHas關閉和whereHas使用($ article_id的)不與收集工作,當你調用,它返回集合$語言 - >標籤不構建器 也有你正確的定義ATAG文章關係模型?

相關問題