我尝试打印我的标签以及我的帖子(名为教程)。
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 :(得分: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