拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 如何在laravelBlade中从多对多关系中获取唯一(不同)值?

如何在laravelBlade中从多对多关系中获取唯一(不同)值?

白鹭 - 2022-01-23 2107 0 0

我有 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 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *