php - Laravel 对关系中的集合使用唯一性
问题描述
通过此代码从数据库中获取数据:
$allTickets = Ticket::with(['user','replies','supporters'])->whereUserId(auth()->user()->id)->get();
为我返回这个结果,它在数组中有 2 个索引,并且所有这些项目我都有supporters
关系,两者都是相同的,现在我的问题是我如何unique
使用collections
Illuminate\Database\Eloquent\Collection {#1550 ▼
#items: array:2 [▼
0 => Modules\Ticket\Entities\Ticket {#1548 ▼
#guarded: array:1 [▶]
#connection: "mysql"
#table: "tickets"
...
#relations: array:3 [▼
"user" => App\User {#1575 ▶}
"replies" => Illuminate\Database\Eloquent\Collection {#1565 ▶}
"supporters" => Illuminate\Database\Eloquent\Collection {#1572 ▼
#items: array:1 [▼
0 => App\User {#1585 ▼
...
#attributes: array:19 [▼
"id" => 1
"user_id" => null
...
"api_token" => "a"
"remember_token" => null
"deleted_at" => null
"created_at" => "2020-06-14 13:56:45"
"updated_at" => "2020-06-14 13:56:45"
]
...
}
]
}
]
...
}
1 => Modules\Ticket\Entities\Ticket {#1567 ▼
#guarded: array:1 [▶]
#connection: "mysql"
#table: "tickets"
...
#relations: array:3 [▼
"user" => App\User {#1575 ▶}
"replies" => Illuminate\Database\Eloquent\Collection {#1551 ▶}
"supporters" => Illuminate\Database\Eloquent\Collection {#1559 ▼
#items: array:1 [▼
0 => App\User {#1585 ▼
...
#attributes: array:19 [▼
"id" => 1
"user_id" => null
...
"api_token" => "a"
"remember_token" => null
"deleted_at" => null
"created_at" => "2020-06-14 13:56:45"
"updated_at" => "2020-06-14 13:56:45"
]
...
}
]
}
]
...
}
]
}
我测试过的代码:
@foreach($allTickets as $supporter)
@php
$unique = $supporter->supporters->unique();
@endphp
@foreach($unique->values()->all() as $user)
...
...
...
@endforeach
@endforeach
解决方案
或者你可以这样查询:
$allTickets = collect(Ticket::with(['user','replies','supporters'])->whereUserId(auth()->user()->id)->get());
$allUniqueTickets = $allTickets->unique();
$tickets = $allUniqueTickets->values()->all();
这样您就可以轻松地从控制器中获取所有唯一值。我希望这回答了你的问题。有关更多信息,您可以查看https://laravel.com/docs/7.x/collections#method-unique
推荐阅读
- c# - 在 IIS 8 上托管的 ASP.NET Web 应用程序上读取系统事件日志条目时访问被拒绝
- android - 如何在服务之间广播消息?
- javascript - 数组未定义 - React Redux
- java - Java Jsoup 解析站点但未获取所需元素
- javascript - 编辑不和谐角色权限。(discord.js)
- node.js - React 组件不显示在 Heroku 上,但显示在本地
- javascript - Angular Dart providers
- c# - C# HTTPS 网站登录
- powershell - cd 程序文件错误:找不到位置参数
- angular - onEditComplete 不起作用