gpt4 book ai didi

laravel - 过滤不重复的集合

转载 作者:行者123 更新时间:2023-12-01 22:33:55 25 4
gpt4 key购买 nike

我有一个像下面这样的 laravel 集合:

[
{
"id":2,
"name":"Product 1",
"awards":[
{
"id":1,
"name":"Award 1",
"pivot":{
"product_id":2,
"award_id":1
}
},
{
"id":2,
"name":"Award 2",
"description":"Quae sint vero id iste.",
"pivot":{
"product_id":2,
"award_id":2
}
},
{
"id":3,
"name":"Award 3",
"pivot":{
"product_id":2,
"award_id":3
}
},
]
},
{
"id":3,
"name":"Product 2",
"awards":[
{
"id":2,
"name":"Award 2",
"pivot":{
"product_id":3,
"award_id":12
}
},
{
"id":3,
"name":"Award 3",
"pivot":{
"product_id":3,
"award_id":13
}
},
{
"id":14,
"name":"Award 4",
"pivot":{
"product_id":3,
"award_id":14
}
},
]
}
]

有没有办法让我得到像下面这样的合集,所有奖项,没有重复:

      "awards":[
{
"id":1,
"name":"Award 1",
"pivot":{
"product_id":2,
"award_id":1
}
},
{
"id":2,
"name":"Award 2",
"description":"Quae sint vero id iste.",
"pivot":{
"product_id":2,
"award_id":2
}
},
{
"id":3,
"name":"Award 3",
"pivot":{
"product_id":2,
"award_id":3
}
},
{
"id":12,
"name":"Award 2",
"pivot":{
"product_id":3,
"award_id":12
}
},
{
"id":14,
"name":"Award 4",
"pivot":{
"product_id":3,
"award_id":14
}
},
]

我知道 Laravel 集合类有许多方法(如过滤器等),但我正在努力让它们“跨对象”工作——例如这里我有两个我几乎想要的对象

combine('awards')->unique()

...类似的东西。

编辑

我得到的初始数组非常简单,一个盒子包含许多产品,这些产品有奖励,所以我想说,这个盒子共有 x、y、z 奖励。不管怎样,这里是查询(上面是return $box的结果):

$box = Box::with('products.awards')->find($id);

最佳答案

有一种非常简单的方法。

$awardsArray = $products->lists('awards');
$awardsDirty = new Collection($awardsArray);
$awards = $awardsDirty->unique();

关于laravel - 过滤不重复的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27707204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com