拉拉维尔方法全部并选择不起作用



我有一个代码:

$orders = Order::all();
$allorders = $orders->count();
$deliveryQuery = $orders->where('status', '=', '8')->select(DB::raw('AVG(updated_at) as order_average'))->first();

我收到错误:

Method select does not exist.

我该如何解决?我的代码正在工作,如果我这样做:

$deliveryQuery = Order::where('status', '=', '8')->select(DB::raw('AVG(updated_at) as order_average'))->first();

但这不好,我想要 1 个查询,但不是 2..

更新:

$orders->where('status', '=', '8')->avg('updated_at')->first();

我可以使用此代码吗?但它不起作用..获取错误:

Object of class IlluminateSupportCarbon could not be converted to int

all(( 方法返回一个集合。然后,您可以对结果使用集合方法,但 where(( 和 select(( 是 QueryBuilder 类的方法。

$query = Order::query(); // You can get the query builder this way.
$orders = Order::all(); // equivalent to $query->get(); => return a Collection
$orderCount = Order::count(); // equivalent to $query->count();
$orderCount = $orders->count(); // here $orders is a Collection and the count() method is from the Collection class

当你调用 avg(( 时,你从 Collection 类调用它。但它只能对数字起作用,并且updated_at属性被 Laravel 解析为碳日期。

您的代码可能是:

$query = Order::query();
$orders = $query->get();
$allorders = $query->count();
$deliveryQuery = $query->where('status', '=', '8')->select(DB::raw('AVG(updated_at) as order_average'))->first();
你可以

试试这个。

$query = Order::query();
$orders = clone $query;
$orders = $orders->all();
$allorders = $orders->count();
$deliveryQuery = $query->where('status', '=', '8')->select(DB::raw('AVG(updated_at) as order_average'))->first();

类似的问题可以在这里找到

最新更新