Laravel 6.0 Eloquent - 按日期和状态排序

作者:编程家 分类: laravel 时间:2025-08-10

使用Laravel 6.0的Eloquent ORM,我们可以轻松地对数据库中的数据进行排序,并根据日期和状态进行筛选。这为我们的应用程序提供了强大的功能,使我们能够根据特定的需求来获取和展示数据。

在下面的示例中,我们将使用一个名为"tasks"的数据表,其中包含任务的信息,包括任务名称、截止日期和状态。我们将按照截止日期从最近到最远的顺序对任务进行排序,并只选择状态为"进行中"的任务。

首先,我们需要在Laravel中创建一个名为"Task"的模型,并将其与"tasks"数据表关联起来。在终端中运行以下命令来生成模型:

bash

php artisan make:model Task

接下来,我们需要在"Task"模型中定义数据表的名称和字段。打开生成的"Task"模型文件(位于"app"目录下),并更新代码如下:

php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Task extends Model

{

protected $table = 'tasks';

protected $fillable = [

'name', 'deadline', 'status'

];

}

然后,我们可以在控制器中使用以下代码来获取按照日期和状态排序的任务列表:

php

namespace App\Http\Controllers;

use App\Task;

use Illuminate\Http\Request;

class TaskController extends Controller

{

public function index()

{

$tasks = Task::where('status', '进行中')

->orderBy('deadline', 'desc')

->get();

return view('tasks.index', compact('tasks'));

}

}

在上述代码中,我们使用"Task"模型的"where"方法来筛选状态为"进行中"的任务。然后,我们使用"orderBy"方法按照"deadline"字段进行降序排序。最后,我们使用"get"方法获取排序后的任务列表。

在视图文件(位于"resources/views"目录下)中,我们可以使用以下代码来展示任务列表:

html

@foreach($tasks as $task)

{{ $task->name }}

截止日期:{{ $task->deadline }}

状态:{{ $task->status }}

@endforeach

在上述代码中,我们使用了@foreach循环来遍历任务列表,并使用{{ }}语法来输出任务的名称、截止日期和状态。

案例代码:

php

namespace App\Http\Controllers;

use App\Task;

use Illuminate\Http\Request;

class TaskController extends Controller

{

public function index()

{

$tasks = Task::where('status', '进行中')

->orderBy('deadline', 'desc')

->get();

return view('tasks.index', compact('tasks'));

}

}

html

@foreach($tasks as $task)

{{ $task->name }}

截止日期:{{ $task->deadline }}

状态:{{ $task->status }}

@endforeach

使用Laravel 6.0的Eloquent ORM,我们可以轻松地对数据库中的数据进行排序,并根据日期和状态进行筛选。通过在模型中定义数据表的名称和字段,并在控制器中使用Eloquent的查询构建器方法,我们可以获取排序后的任务列表。最后,在视图文件中使用@foreach循环来展示任务列表的信息。这使我们能够灵活地根据特定的需求来获取和展示数据。