Php 两天laravel查询之间的差异

Php 两天laravel查询之间的差异,php,laravel,Php,Laravel,是否有任何方法可以使用laravel查询获得两天的差异(今天和创建时) 我试过如下方法,但那对我不起作用 public function scopeActivatedOrders($query,$currentDate){ return $query->select('*') ->where('orders.activated', '=', '1') ->where('DATEDIFF(order.arrived_

是否有任何方法可以使用laravel查询获得两天的差异(今天和创建时)

我试过如下方法,但那对我不起作用

public function scopeActivatedOrders($query,$currentDate){
        return $query->select('*')
            ->where('orders.activated', '=', '1')
            ->where('DATEDIFF(order.arrived_date,$currentDate)','>','14')->get();
    }

谢谢大家!

尝试第一次选择,然后添加where条件

公共函数作用域ActivateOrders($query,$currentDate)
{
return$query->select('orders.*',\DB::raw('DATEDIFF(order.arrized\u date,NOW())作为diffday'))
->其中('orders.activated'、'='、'1')
->得到()
->其中('diffday','>','14');
}

您可以使用简单的PHP实现这一点。最好是使用PHP OOP方式。像这样:

$fdate = $request->Fdate;
$tdate = $request->Tdate;
$datetime1 = new DateTime($fdate);
$datetime2 = new DateTime($tdate);
$interval = $datetime1->diff($datetime2);
$days = $interval->format('%a');//now do whatever you like with $days

DateTime不是一个函数,它是一个类,所以不要忘记添加:使用DateTime;在控制器顶部,以便它可以引用右根类或使用\DateTime()而不是在创建其实例时使用它。

代码中的问题是,您使用的是标准,其中以列作为第一个参数,而不是表达式。。。 您可以使用或仅使用DB::raw,如:

return $query->select('*')
            ->where('orders.activated', '=', '1')
            ->whereRaw('DATEDIFF(order.arrived_date,Now())>14')->get();

注意:您可以使用mysql函数代替$currentDate变量…

这是否回答了您的问题?我想使用queryIt获得两天的差异,它导致了这个错误,SQLSTATE[42S22]:Column not found:1054 where子句中的未知列diffday'try now。。。我补充说,get so
diffday
之后的where条件将在那里可用,它不会显示任何错误,但当我在foreach中添加()该方法的结果时,它不会显示任何数据,也不会为空