通过ID数组对Laravel集合进行排序

马修·布朗

是否可以在仍然通过关系访问的同时使用单独的ID数组订购关系集合?

设置Checklist有很多ChecklistItems,我以正常方式访问此关系:

foreach ($list->items as $item) {
    // More Code Here
}

现在,所需的$item存在顺序作为属性在$list属性下的存在$list->item_order,它只是$item按用户所需的顺序排列的ID数组,特定于$list要迭代ID

是否存在一种可行的方法来根据模型所具有数组$items附件进行排序$listitem_order$list

(我不能只在'item'表中添加'order'列,b / c订单会根据特定的'list'关系进行更改)。

谢谢你的帮助!

Lukasgeiter

你可以这样做:

$order = $list->item_order;
$list->items->sortBy(function($model) use ($order){
    return array_search($model->getKey(), $order);
}

您也可以在模型中添加属性访问器

public function getSortedItemsAttribute() 
{
    if ( ! is_null($this->item_order)) {
        $order = $this->item_order;

        $list = $this->items->sortBy(function($model) use ($order){
            return array_search($model->getKey(), $order);
        });
        return $list;
    }
    return $this->items;
}

用法:

foreach ($list->sortedItems as $item) {
    // More Code Here
}

如果您需要在多个地方使用这种功能,建议您创建自己的Collection类:

class MyCollection extends Illuminate\Database\Eloquent\Collection {

    public function sortByIds(array $ids){
        return $this->sortBy(function($model) use ($ids){
            return array_search($model->getKey(), $ids);
        }
    }
}

然后,newCollection()在模型中实际使用该类重写在这种情况下,它将在ChecklistItems类中:

public function newCollection(array $models = array())
{
    return new MyCollection($models);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Laravel按动态ID数组对集合进行排序

来自分类Dev

通过 hasMany 关系对 laravel 集合进行排序

来自分类Dev

根据Laravel 5.1中的索引进行排序或集合或数组

来自分类Dev

根据Laravel 5.1中的索引进行排序或集合或数组

来自分类Dev

对流星集合内的数组进行排序

来自分类Dev

如何对集合中的数组进行排序?

来自分类Dev

Laravel按日期对集合进行排序

来自分类Dev

按另一个数组对 Laravel 集合进行排序

来自分类Dev

通过按多个条件对集合进行排序来对集合进行排序

来自分类Dev

按数组集合的键对多维数组进行排序

来自分类Dev

通过索引数组进行c ++排序

来自分类Dev

通过PHP数组对CSV数据进行排序

来自分类Dev

如何通过“ department_id”对这种类型的关联数组进行排序

来自分类Dev

通过另一个ID数组对ActiveRecord结果集进行排序

来自分类Dev

如何通过具有相同ID的Javascript中的sort函数对关联数组进行排序?

来自分类Dev

如何对通过使用文档ID检索的文档的内部数组进行排序

来自分类Dev

无法通过OpenCms中的升序或降序对列表集合进行排序

来自分类Dev

如何通过两个嵌套关联对集合进行排序

来自分类Dev

Rails通过自定义方法对集合进行排序

来自分类Dev

Firebase如何通过createdAt字段对集合进行排序?

来自分类Dev

通过子div的ID对div进行排序

来自分类Dev

如何根据数组中的值对集合进行排序

来自分类Dev

如何使用数组顺序对这个集合进行排序?

来自分类Dev

PHP排序-通过Unix时间戳对多维数组进行排序

来自分类Dev

laravel按日期对数组进行排序

来自分类Dev

按日期对laravel 5.1集合响应进行排序

来自分类Dev

按2个参数对Laravel集合进行排序

来自分类Dev

排序数组或集合

来自分类Dev

通过内部数组字段对数组进行排序

Related 相关文章

  1. 1

    Laravel按动态ID数组对集合进行排序

  2. 2

    通过 hasMany 关系对 laravel 集合进行排序

  3. 3

    根据Laravel 5.1中的索引进行排序或集合或数组

  4. 4

    根据Laravel 5.1中的索引进行排序或集合或数组

  5. 5

    对流星集合内的数组进行排序

  6. 6

    如何对集合中的数组进行排序?

  7. 7

    Laravel按日期对集合进行排序

  8. 8

    按另一个数组对 Laravel 集合进行排序

  9. 9

    通过按多个条件对集合进行排序来对集合进行排序

  10. 10

    按数组集合的键对多维数组进行排序

  11. 11

    通过索引数组进行c ++排序

  12. 12

    通过PHP数组对CSV数据进行排序

  13. 13

    如何通过“ department_id”对这种类型的关联数组进行排序

  14. 14

    通过另一个ID数组对ActiveRecord结果集进行排序

  15. 15

    如何通过具有相同ID的Javascript中的sort函数对关联数组进行排序?

  16. 16

    如何对通过使用文档ID检索的文档的内部数组进行排序

  17. 17

    无法通过OpenCms中的升序或降序对列表集合进行排序

  18. 18

    如何通过两个嵌套关联对集合进行排序

  19. 19

    Rails通过自定义方法对集合进行排序

  20. 20

    Firebase如何通过createdAt字段对集合进行排序?

  21. 21

    通过子div的ID对div进行排序

  22. 22

    如何根据数组中的值对集合进行排序

  23. 23

    如何使用数组顺序对这个集合进行排序?

  24. 24

    PHP排序-通过Unix时间戳对多维数组进行排序

  25. 25

    laravel按日期对数组进行排序

  26. 26

    按日期对laravel 5.1集合响应进行排序

  27. 27

    按2个参数对Laravel集合进行排序

  28. 28

    排序数组或集合

  29. 29

    通过内部数组字段对数组进行排序

热门标签

归档