我正在从我的Sermon表中检索最新的4行,并将其传递给View Composer的视图。但我不知道我怎么能访问每个布道附带的标签
namespace App\Http\ViewComposers;
use App\Sermon;
use App\Tags;
use Illuminate\View\View;
class SermonComposer
{
public function compose(View $view)
{
$sermons = Sermon::take(4)->orderBy('id','DESC')->get();
$view->with('sermons', $sermons );
}
}
如何访问与单个讲道相关的标签名称? 布道可以有多个标签
这就是我在讲道模型中的内容
public function tag()
{
return $this->belongsToMany('App\Tag');
}
这是我的刀片
@foreach ($sermons as $sermon )
<tr>
<td>{{$sermon->id}}</td>
<td>{{$sermon->title}}</td>
<td>{{$sermon->pivot->name}}</td>
<td><img src="{{ asset('img/sermons/'. $sermon->sermon_image)}}" alt=""></td>
<td><a href="#">@include('svg.edit')</a></td>
</tr>
@endforeach
如果我{{dd($ sermons)}}这是我得到的,我注意到我的关系数组是空的
答案 0 :(得分:2)
这是多对多的关系所以你应该使用复数名称作为关系,如
public function tags()
{
return $this->belongsToMany('App\Tag');
}
定义关系后,您必须在使用with()
查询时加载标记。
public function compose(View $view)
{
$sermons = Sermon::with('tags')->take(4)->orderBy('id','DESC')->get();
$view->with('sermons', $sermons );
}
然后在刀片视图中,您可以这样做
@foreach ($sermons as $sermon )
<tr>
<td>{{$sermon->id}}</td>
<td>{{$sermon->title}}</td>
@foreach ($sermon->tags as $tag )
<td>{{$tag->name}}</td>
@endforeach
<td><img src="{{ asset('img/sermons/'. $sermon->sermon_image)}}" alt=""></td>
<td><a href="#">@include('svg.edit')</a></td>
</tr>
@endforeach
这只是我给你的问题可能有所不同的例子。如果您想要更具体的答案,请显示刀片视图。
如果您有任何疑问,请发表评论。