Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 按开始日期和结束日期之间的持续时间排序数据顺序_Laravel_Laravel 7 - Fatal编程技术网

Laravel 按开始日期和结束日期之间的持续时间排序数据顺序

Laravel 按开始日期和结束日期之间的持续时间排序数据顺序,laravel,laravel-7,Laravel,Laravel 7,我用的是拉威尔7。我有一个名为assistances的表,它有一些列和这两列: - start_date - end_date 我想按开始日期和结束日期之间的持续时间对数据顺序进行排序: $query = Assistance::join('users', 'assistances.user_id', '=', 'users.id') ->select('assistances.*') ->orderBy('duration between sta

我用的是拉威尔7。我有一个名为assistances的表,它有一些列和这两列:

- start_date
- end_date
我想按开始日期和结束日期之间的持续时间对数据顺序进行排序:

 $query = Assistance::join('users', 'assistances.user_id', '=', 'users.id')
        ->select('assistances.*')
        ->orderBy('duration between start_date and end_date');
 ;

我怎样才能做到这一点呢?

请尝试以下方法-请记住这不是非常有效的

DATEDIFF
返回两个日期之间的天数。您可能还希望使用
TIMESTAMPDIFF
,它接受第一个参数,例如'hour',在这里您可以获得更精确的控制

$query = Assistance::join('users', 'assistances.user_id', '=', 'users.id')
        ->select('assistances.*')
        ->orderBy(DB::raw('DATEDIFF(start_date, end_date)'))
        ->get();

也请
使用DB在您的课堂上。

请尝试以下方法-请记住这不是非常有效的

DATEDIFF
返回两个日期之间的天数。您可能还希望使用
TIMESTAMPDIFF
,它接受第一个参数,例如'hour',在这里您可以获得更精确的控制

$query = Assistance::join('users', 'assistances.user_id', '=', 'users.id')
        ->select('assistances.*')
        ->orderBy(DB::raw('DATEDIFF(start_date, end_date)'))
        ->get();

也请
使用DB在您的类中。

选择是ASC还是DESC我使用orderByRaw
->orderByRaw(DB::raw(“DATEDIFF(开始日期,结束日期)描述”))
选择是ASC还是DESC我使用orderByRaw
->orderByRaw(DB::raw(“DATEDIFF(开始日期,结束日期)描述”))