gpt4 book ai didi

php - Laravel Eloquent 集合 sortBy 不生效

转载 作者:行者123 更新时间:2023-11-29 15:40:19 25 4
gpt4 key购买 nike

在急切加载属性及其项目后,我尝试对属性进行排序,但运气不佳。

public function __invoke(Category $category)
{
$category->load(['attributes']);

$category->attributes->load(['items' => function ($query) use ($category) {
$query->whereHas('productVariations.product.categories', function ($query) use ($category) {
$query->where('categories.id', $category->id);
});
}]);
foreach ($category->attributes as $attribute) {
$attribute->items = $attribute->items->sortByDesc('name');
}

dump($category->attributes->first()->items->pluck('name')); // Items are sorted
dd($category->attributes->toArray()); // Items are not sorted
}

您能告诉我这是为什么吗?我如何使用集合(而不是 Eloquent 和 MySql)对它们进行排序?

最佳答案

您的问题是您没有替换集合本身中的项目。所以我相信 map 在这里会比传统的 foreach 做得更好。所以试试这个并让我知道:

$attributes = $category->attributes->map(function($attribute) {
$attribute->items = $attribute->items->sortByDesc('name');
return $attribute;
});

dd($attributes);

关于php - Laravel Eloquent 集合 sortBy 不生效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57743533/

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