# 第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)