【问题标题】:Laravel Controller/Modal order by in all()Laravel 控制器/模态命令按 in all()
【发布时间】:2021-09-06 13:45:28
【问题描述】:

试图对我的表进行排序。数字是category_id,它们不是按数字排序的(1和2在表的底部),我想订购它们。

控制器:

public function fetchcategory(){
    $all_categories = HmsBbrCategory::all();
    return response()->json([
        'all_categories'=>$all_categories,
    ]);
}

当我尝试下面的代码时,我的控制台中出现 500 内部服务器错误:

$all_categories = HmsBbrCategory::orderBy('category_id', 'ASC')->all();

orderBy 代码我做错了什么?

【问题讨论】:

  • 试试HmsBbrCategory::orderBy('category_id', 'ASC')->get()
  • 啊,所以 get() 和 all() 功能相同。谢谢

标签: sql laravel sorting controller sql-order-by


【解决方案1】:

仅供参考了解all()get()之间的区别

所有()

它是一个static method,所以你不能执行额外的查询。你在 all() 方法中的唯一选项是你可以select columns

public static function all($columns = ['*'])
{
    return static::query()->get(
        is_array($columns) ? $columns : func_get_args()
    );
}

如果我们看到该静态 all() 方法的实现。在内部它调用get() method

1.all() 接受columns as array。默认设置为*,表示所有列都被选中。

2.在那个方法里面,我们可以看到get()被调用了。所以在 get 之后我们不能调用任何查询操作,所以它会抛出错误

get() 是 Eloquent 构建器 \Illuminate\Database\Eloquent\Builder

【讨论】:

    【解决方案2】:

    只需更新这一行

    $all_categories = HmsBbrCategory::orderBy('category_id', 'ASC')->all();
    

    进入

    $all_categories = HmsBbrCategory::orderBy('category_id', 'ASC')->get();
    

    那么你就会得到你的结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-08
      • 1970-01-01
      • 2019-09-21
      • 2015-05-06
      • 2016-05-09
      • 2017-12-24
      相关资源
      最近更新 更多