# 第3节 Laravel-表单列表及分页实现 # 3.1 创建数据库、student表 3.2 数据库配置文件 3.3 创建模型 3.4 用户列表页 3.5 实现分页功能 # 3.1 创建数据库、student表 # 创建数据库,打开CMD,执行下列SQL命令。 -- 库名 CREATE DATABASE `example`; -- 选库 use example -- 学生信息表 CREATE TABLE `student`( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '学生姓名', `age` INT(3) NOT NULL DEFAULT 0 COMMENT '年龄', `sex` TINYINT(1) NOT NULL DEFAULT 2 COMMENT '0:女,1:男,2:未知' )ENGINE=InnoDB DEFAULT CHARSET=utf8; -- 测试数据 INSERT INTO `student` (name, age, sex) VALUES ('张三', 20, 1), ('李四', 18, 1), ('王五', 90, 1), ('王婆', 99, 0), ('李桂花', 66, 0), ('小丽', 16, 2); ![](https://box.kancloud.cn/997d48c7e839b9f339c0075908a6ea99_737x261.png) # 3.2 数据库配置文件 # 配置文件:`.env` DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=example DB_USERNAME=root DB_PASSWORD=root 在项目中,我们将会使用 `Eloquent ORM` 操作数据库,这里我们使用 `查询构造器` 测试数据库连接情况。 在控制器中 `app\Http\Controllers\StudentController.php` <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Requests; use DB; class StudentController extends Controller { public function index() { $students = DB::table('student')->get(); dd($students); return view('student/index'); } } 访问首页查看测试效果: ![](https://box.kancloud.cn/4e7050935ef1bef34f534be8167e31df_664x410.png) 在 DB facade 上使用 table 方法, table 方法会针对指定的数据表返回一个查询构造器实例,允许你在查询时链式调用更多约束,并得到最终结果。在这个例子中,我们将会从一个数据表中来获取所有的记录。 # 3.3 创建模型 # 创建模型实例的最简单方法是使用 make:model Artisan 命令: php artisan make:model models/Student 生成的模型文件在:`app\models\Student.php` <?php namespace App\models; use Illuminate\Database\Eloquent\Model; class Student extends Model { // } 在模型上定义一个 table 属性,用来指定自定义的数据表名称,否则默认是以模型的复数形式名称作为数据表的名称。 `\app\models\Student.php` <?php namespace App\models; use Illuminate\Database\Eloquent\Model; class Student extends Model { /** * 与模型相关的数据表 */ protected $table = "student"; /** * 指定是否模型应该被戳记时间 */ public $timestamps = false; } # 3.4 用户列表页 # `app\Http\Controllers\StudentController.php` class StudentController extends Controller { /** * 用户列表页 * * @param * @return void * @author webjust [604854119@qq.com] */ public function index() { // 使用模型获取全部数据 $students = Student::get(); // 渲染 student/index 视图,并传递查询出来的全部数据 return view('student/index', ['students' => $students]); } } 在视图中显示全部的数据: `\resources\views\student\index.blade.php` @foreach($students as $student) <tr> <th scope="row">{{ $student->id }}</th> <td>{{ $student->name }}</td> <td>{{ $student->age }}</td> <td>{{ $student->sex }}</td> <td>2016-01-01</td> <td> <a href="">详情</a> <a href="">修改</a> <a href="">删除</a> </td> </tr> @endforeach 显示效果如下: ![](https://box.kancloud.cn/4ad8a08440c4ff05839107b74115fcb0_1046x728.png) 这里我们再修改表结构,增加2个字段吧! 执行SQL语句: -- 修改student表结构 ALTER TABLE `student` ADD `created_time` INT(10) NULL DEFAULT 0 COMMENT '用户创建时间' AFTER `sex`; ALTER TABLE `student` ADD `updated_time` INT(10) NULL DEFAULT 0 COMMENT '最后修改时间' AFTER `created_time`; -- 添加1条测试数据 INSERT INTO `student` (name, age, sex, created_time, updated_time) VALUES ('侯亮平', 35, 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()); 修改视图文件: @foreach($students as $student) <tr> <th scope="row">{{ $student->id }}</th> <td>{{ $student->name }}</td> <td>{{ $student->age }}</td> <td>{{ $student->sex }}</td> <td>{{ date('Y-m-d', $student->created_time) }}</td> <td> <a href="">详情</a> <a href="">修改</a> <a href="">删除</a> </td> </tr> @endforeach # 3.5 实现分页功能 # 在Laravel中添加分页非常简单,对 Eloquent 模型进行分页,我们将对 Student 模型进行分页并且设置其每页有 5 条数据。 $students = Student::paginate(5); 将分页结果显示在视图中: ~~~ <!-- 分页 --> <div class="pull-right"> {{ $students->links() }} </div> ~~~ 实现效果如图: ![](https://box.kancloud.cn/23cfd5895ac9764bea68175c50d31721_1046x728.png)