我有 3 个模型:用户、票证、标签。关系就像:
票模型
public function Users()
{
return $this->belongsTo('App\User');
}
public function Tags()
{
return $this->belongsToMany('App\Tag');
}
用户模型:
public function Tickets()
{
return $this->hasMany('App\Ticket');
}
标签模型
public function Tickets()
{
return $this->belongsToMany('App\Ticket');
}
我想获取特定用户票的所有标签。在控制器中以不同的方式(不重复)我有这个代码:
public function usersTags()
{
$tickets = Auth::user()->Tickets()->get();
return view('test' , compact('tickets'));
}
在我的刀片中,我有这些:
@foreach ($tickets as $ticket)
@foreach ($ticket->tags as $tag)
<ul>
<li>
{{$tag->title}}
</li>
</ul>
@endforeach
@endforeach
这些代码给了我所有标签,但标签重复。有人可以帮我吗?
uj5u.com热心网友回复:
使用unique
方法
@foreach ($tickets->map(function($t){return $t->tags;})->unique('id') as $tag)
<li> {{$tag->title}} </li>
@endforeach
uj5u.com热心网友回复:
您可以像这样按名称或 ID 对票进行分组
public function usersTags()
{
$tickets = Auth::user()->with(['Tickets'=> function($query) {
$query->groupBy('name'); //or whatever column you want to group
}])->get();
return view('test' , compact('tickets'));
}
0 评论