【问题标题】:How to sort records in alphabetical order in Laravel如何在 Laravel 中按字母顺序对记录进行排序
【发布时间】:2018-04-25 02:22:25
【问题描述】:

如何在laravel中按字母顺序对记录进行排序?

public function index()
{
    $comproducts = Comproduct::paginate(3);

    $items = Item::orderBy('name')->all();        

    return view('computer', compact(['comproducts', 'items']));

}

这不能正常工作。这表明

调用未定义的方法 Illuminate\Database\Query\Builder::all()

这个错误。我该如何解决这个问题?

【问题讨论】:

  • 使用get() 代替all()?
  • 谢谢兄弟。现在可以正常使用了

标签: php laravel blade


【解决方案1】:

我用get()代替,你不能用all()方法修改查询,它也是静态函数

  $items = Item::orderBy('name')->get(); 

【讨论】:

    【解决方案2】:

    这就是你的排序方式,orderBy()all() 之后:

    $items = Item::all()->sortBy('name');    
    

    参考:https://laravel.com/docs/5.5/collections

    【讨论】:

    • 我觉得应该是sortBy() ??
    • orderBy 用于修改查询,sortBy 用于过滤结果,因此sortBy 将起作用。但我认为get() 方法可以在这里使用而不是all
    • sortBy() 基本上是用来根据字段对集合进行排序的。而且由于问题有all(),因此我相信sortBy()会更好。
    【解决方案3】:

    嗨,请根据 eloquent query laravel 找答案

    表:用户 列:id、name、class_id

    $users = DB::table('users')->whereIn('class_id', [1, 2, 3])->orderBy('name', 'ASC')->paginate(50);
    

    【讨论】:

    【解决方案4】:

    您可以根据要排序的顺序执行以下任何操作

    升序排列

     $students = Student::whereId($id)->orderBy('name')->get()->all();
    

    降序排列

     $students = Student::whereId($id)->orderByDesc('name')->get()->all();
    

    【讨论】:

    • 问题是我得到了一个数组。例如,如果我使用$students->count(),则会收到以下错误:Call to a member function count() on array。 :/ 所以应该没有->all() => $students = Student::whereId($id)->orderBy('name')->get();
    猜你喜欢
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 2011-08-29
    • 2010-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多