我有 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'));
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/407108.html
標籤:
上一篇:Laravel非常慢的雄辯查詢
