2014-06-20 52 views
0

我試圖打印我的標籤以及我的帖子(它們被命名爲教程)。(laravel4)打印帶標籤的帖子

class HomeController extends BaseController 
{ 
    public function index() 
    { 
     $tutorials = Tutorial::where('draft', '=', 0)->get(); 
     $tags = $tutorials->first()->tags()->get(); 

     return View::make('home', array(
      'tags' => $tags, 
      'tutorials' => $tutorials 
     )); 
    } 
} 

如果我這樣做,它的工作原理,但很明顯,我總是隻得到屬於教程第一標籤存在,而不是標籤。我一直在試圖把它從昨天開始工作,但我只是被困再次...

教程模式:

class Tutorial extends Eloquent { 
    protected $table = 'tutorials'; 

    public function tags() { 
     return $this->belongsToMany('Tag', 'tutorials_tags', 'tutorial_id'); 
    } 
} 

標籤型號:

class Tag extends Eloquent { 
    protected $table = 'tags'; 

    public function tutorials() { 
     return $this->belongsToMany('Tutorial', 'tutorials_tags', 'tag_id'); 
    } 
} 

首頁視圖:

@foreach($tutorials as $tutorial) 

    <p>{{$tutorial->title}}</p> 
    <p>{{$tutorial->body}}</p> 

    @foreach($tags as $tag) 
     <p><b>Tags:</b> {{$tag->name}}</p> 
    @endforeach 

    <br> 

@endforeach 
+0

你能還附上了代號爲'home'看法? – Unnawut

+0

嘿,你再次^^主頁視圖現在附上。再次感謝。 – Dieter91

+0

所以你想列出所有的教程,以及與每個相關的標籤?或者你只想得到第一個教程,其標籤? – Unnawut

回答

0

您的控制器代碼有點模棱兩可,我假設您要列出所有教程以及與每個教程。

您可以利用Laravel的急切加載,提示:with('tags')。基本上它會告訴Laravel,嘿,當你爲我拿取教程時,把他們帶回「帶着他們的標籤」。所以你不需要像你想要做的那樣分開獲取標籤。

因此,在您的HomeController:

class HomeController extends BaseController 
{ 
    public function index() 
    { 
     $tutorials = Tutorial::with('tags')->where('draft', '=', 0)->get(); 

     return View::make('home', array(
      'tutorials' => $tutorials 
     )); 
    } 
} 

而且你的觀點:

@foreach($tutorials as $tutorial) 

    <p>{{$tutorial->title}}</p> 
    <p>{{$tutorial->body}}</p> 

    @foreach($tutorial->tags as $tag) 
     <p><b>Tags:</b> {{$tag->name}}</p> 
    @endforeach 

    <br> 

@endforeach 
+0

謝謝!再次幫助我,你是我的英雄。非常感謝 – Dieter91

+0

下次我只提供提示! :p – Unnawut