Laravel 5.1如何使用lists()方法对集合进行排序

时间:2018-01-02 09:35:40

标签: php laravel laravel-5.1

我有两个问题/帮助解决这个问题:

  1. 如何减少此代码行$this->all()->lists('name', 'id')->all()
  2. 中的冗余
  3. 如何使用orderBy方法调用mutator。
  4. helper.php

    if (! function_exists('withEmpty')) {
    
        function withEmpty($selectList, $emptyLabel = '')
        {
            return array('' => $emptyLabel) + $selectList;
        }
    }
    

    Agent.php(模特)

    public function getNameAttribute($value){
        return $this->lname.', '.$this->fname.' '.$this->mname;
      }
    
    public function listAgents($emptyLabel = '--Select Agent--'){
    
        return withEmpty($this->all()->lists('name', 'id')->all(), $emptyLabel);
    
    
      }
    

2 个答案:

答案 0 :(得分:4)

1。更改此内容:

$this->all()->lists('name', 'id')->all()

要:

$this->all()->lists('name', id)

2。你做不到。使用sortBy()sortByDesc()集合方法代替闭包:

->sortBy(function($i) {
    return $i->name;
});

答案 1 :(得分:1)

您可以使用 pluck sortBy 方法,然后应用关闭

$this->pluck('name', 'id')->sortBy(function($el) {
    return $el->name;
});