之前分享了自己对模型和控制器的一些使用方法,这次将分享有关视图以及分页的一些简单用法
一 分页
通过阅读laravel的开发文档可以知道通过模型或者DB::table的方式可以实现分页,以模型的方式来说应付简单的查询或许不成问题,但如果是带复杂查询的分页可能就力不从心了。因此可以根据实际情况选择是通过模型使用分页还是原生sql方式实现分页
重要:原生sql用括号括起来并起别名;sql语句用DB::raw转换一下
public function useList(){
$sql="(select * from tp_user order by id desc) as userList";
$data=DB::table(DB::raw($sql))->paginate(3);
return view('admin.user.list',compact('data'));
}
原生sql的方式比较万能,如果通过模型构建不出来,就用它吧肯定好使
二 视图
之前说过laravel的视图以.blade.php结尾,可以当做html进行使用,但原则上应该按照laravel的相关语法规则使用,具体的模板语法请参照开发文档
<!doctype html>
<html lang="{{ app()->getLocale() }}">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>用户列表</title>
<!-- Fonts -->
<link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
<style type="text/css">
#pull_right{
text-align:center;
}
.pull-right {
/*float: left!important;*/
}
.pagination {
display: inline-block;
padding-left: 0;
margin: 20px 0;
border-radius: 4px;
}
.pagination > li {
display: inline;
}
.pagination > li > a,
.pagination > li > span {
position: relative;
float: left;
padding: 6px 12px;
margin-left: -1px;
line-height: 1.42857143;
color: #428bca;
text-decoration: none;
background-color: #fff;
border: 1px solid #ddd;
}
.pagination > li:first-child > a,
.pagination > li:first-child > span {
margin-left: 0;
border-top-left-radius: 4px;
border-bottom-left-radius: 4px;
}
.pagination > li:last-child > a,
.pagination > li:last-child > span {
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;
}
.pagination > li > a:hover,
.pagination > li > span:hover,
.pagination > li > a:focus,
.pagination > li > span:focus {
color: #2a6496;
background-color: #eee;
border-color: #ddd;
}
.pagination > .active > a,
.pagination > .active > span,
.pagination > .active > a:hover,
.pagination > .active > span:hover,
.pagination > .active > a:focus,
.pagination > .active > span:focus {
z-index: 2;
color: #fff;
cursor: default;
background-color: #428bca;
border-color: #428bca;
}
.pagination > .disabled > span,
.pagination > .disabled > span:hover,
.pagination > .disabled > span:focus,
.pagination > .disabled > a,
.pagination > .disabled > a:hover,
.pagination > .disabled > a:focus {
color: #777;
cursor: not-allowed;
background-color: #fff;
border-color: #ddd;
}
.clear{
clear: both;
}
</style>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-12">
<table class="table">
<caption>基本的表格布局</caption>
<thead>
<tr>
<th>id</th>
<th>用户名</th>
<th>昵称</th>
</tr>
</thead>
<tbody>
@foreach($data as $val)
<tr>
<td>{{$val->id}}</td>
<td>{{$val->userName}}</td>
<td>{{$val->nickName}}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
<div class="col-md-8 col-md-offset-2">
{{$data->appends(['sort' => 'id-desc'])->links()}}
</div>
</div>
</div>
</body>
</html>
有关分页大多参照开发文档,可以使用appends带上分页的其他参数方便后续查询;关于laravel提供的默认分页样式很多人都吐槽觉得很丑,这里分页样式也是百度找的,有特殊要求可以自己写分页的css样式