文档章节

laravel5.3 一对多表 分页查询

小张525
 小张525
发布于 2017/02/09 17:27
字数 570
阅读 100
收藏 0

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

// 表结构

mysql> desc modules;
+------------+------------------+------+-----+---------+----------------+
| Field      | Type             | Null | Key | Default | Extra          |
+------------+------------------+------+-----+---------+----------------+
| id         | int(11) unsigned | NO   | PRI | NULL    | auto_increment |
| module_dec | int(10) unsigned | NO   |     | NULL    |                |
| module_hex | varchar(10)      | NO   |     | NULL    |                |
| msg        | varchar(255)     | NO   |     | NULL    |                |
| name       | varchar(20)      | NO   |     | NULL    |                |
| status     | tinyint(1)       | YES  |     | 0       |                |
| created_at | timestamp        | YES  |     | NULL    |                |
| updated_at | timestamp        | YES  |     | NULL    |                |
| deleted_at | timestamp        | YES  |     | NULL    |                |
+------------+------------------+------+-----+---------+----------------+
9 rows in set (0.01 sec)

mysql> desc objects;
+------------+------------------+------+-----+---------+----------------+
| Field      | Type             | Null | Key | Default | Extra          |
+------------+------------------+------+-----+---------+----------------+
| id         | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| module_dec | int(10) unsigned | NO   | MUL | NULL    |                |
| object_dec | int(10) unsigned | NO   |     | NULL    |                |
| object_hex | varchar(255)     | NO   |     | NULL    |                |
| name       | varchar(20)      | NO   |     | NULL    |                |
| msg        | varchar(255)     | NO   |     | NULL    |                |
| status     | tinyint(1)       | YES  |     | 0       |                |
| created_at | timestamp        | YES  |     | NULL    |                |
| updated_at | timestamp        | YES  |     | NULL    |                |
| deleted_at | timestamp        | YES  |     | NULL    |                |
+------------+------------------+------+-----+---------+----------------+
10 rows in set (0.01 sec)

mysql> desc errors;
+------------+------------------+------+-----+---------+----------------+
| Field      | Type             | Null | Key | Default | Extra          |
+------------+------------------+------+-----+---------+----------------+
| id         | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| module_dec | int(10) unsigned | NO   | MUL | NULL    |                |
| object_dec | int(10) unsigned | NO   |     | NULL    |                |
| hex        | varchar(20)      | NO   |     | NULL    |                |
| dec        | int(10) unsigned | NO   |     | NULL    |                |
| hex_code   | varchar(10)      | NO   |     | NULL    |                |
| dec_code   | int(10) unsigned | NO   |     | NULL    |                |
| name       | varchar(20)      | NO   |     | NULL    |                |
| msg        | varchar(255)     | NO   |     | NULL    |                |
| status     | tinyint(1)       | YES  |     | 0       |                |
| created_at | timestamp        | YES  |     | NULL    |                |
| updated_at | timestamp        | YES  |     | NULL    |                |
| deleted_at | timestamp        | YES  |     | NULL    |                |
+------------+------------------+------+-----+---------+----------------+
13 rows in set (0.01 sec)

// 关系模型的定义, 逆向的
Module.php
      public function  errors(){
        return $this->hasMany('App\Object','module_dec','module_dec');
    }

Object.php
     /**
     *  对象 & 错误码.
     * @return \Illuminate\Database\Eloquent\Relations\HasMany
     */
    public  function errors(){
        return $this->hasMany('App\Error','object_dec','object_dec');
    }

Error.php
    /**
     * 错误码 & 模块
     * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
     */
    public function  modules(){
        return $this->belongsTo('App\Module','module_dec','module_dec');
    }


    /**
     * 错误码 & 对象.
     * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
     */
    public function objects(){
        return $this->belongsTo('App\Object','object_dec','object_dec');
    }

// 查询处理

        $res =\App\Error::with(['objects'=>function($query){
            $query->with('modules');
        }])->paginate(2);
       
         return View('you page name',['res'=>$res]);   # 为了衔接页面上的变量.

// 页面解析过程

 @foreach ($res as $user)
                <tr>
                    <td>{{ $user->name }}</td>
                    <td>{{ $user['modules']['name'] }}</td>
                    <td>{{ $user['modules']['module_dec'] }}</td>
                    <td>{{ $user['objects']['name'] }}</td>
                    <td>{{ $user['objects']['object_dec'] }}</td>
                    <td>{{ $user->dec }}</td>
                    <td>{{ $user->hex }}</td>
                    <td>{{ $user->hex_code }}</td>
                    <td>{{ $user->dec_code }}</td>
                    <td>{{ $user->msg }}</td>
                    <td>@if( !$user->status ) 启用 @else 禁用 @endif</td>
                    <td>
                        <a href="{{ URL::route('showErrors',[$user->id]) }}">编辑</a>
                        <a href="{{ URL::route('deleteError',[$user->id]) }}">删除</a>
                    </td>
                </tr>
            @endforeach
        </table>
    </div>
    {{ $error->links() }}

###############################
1  写在最后,主要是页面上解析的时候,用的是数组的方式表达的,
2  如果模型中使用了软删除的特性, 那么在该查询的过程中是会过滤掉被软删除的,请注意,
3  如果要添加新的条件可以自己参考手册写,
4  $res = $this->model->with('objects','modules')->paginate(2);  这样的也是可以的,
5  如果查询的过程中使用了groupBy,出现mysql(1055)错误,请参考链接
   https://github.com/laravel/framework/issues/14997

 

© 著作权归作者所有

上一篇: mysql 缺失 查询
下一篇: js 构造函数继承
小张525
粉丝 6
博文 123
码字总数 41070
作品 0
乌鲁木齐
程序员
私信 提问
mybatis多表分页

mybatis的分页是通过拦截器重新拼接SQL,因此分页语句基本都是包含在整个SQL语句外面,那么对于多表查询就会出现查询结果不准确的结果,A与B为一对多关系,A为主表,当使用链接语句查询A和B...

SGoschina
2015/10/22
469
0
hibernate 关联查询问题

请说说是这么解决这个问题的:User表,Order表,他们是一对多关系,通过hibernate设置关联关系(OneToMany),问题1,我希望每次调用user.getOrder()的时候才开始查询,如果不调用此方法就不查...

jerry2012
2014/06/20
230
9
laravel5.3的新功能尝鲜

上一节课 https://my.oschina.net/lilugirl2005/blog/783370 上一节课我们讲了laravel5.3的安装,这节讲laravel5.3的一些基础命令和配置 Listeners文件夹 进入laravel项目目录输入命令 创建用...

lilugirl
2016/11/14
139
0
学习hibernate(八) -- HQL查询语句

HQL语句 HQL(Hibernate Query Language)提供更加丰富灵活、更为强大的查询能力。 可设定WHERE 可进行投影查询 可分页 可分组 可做连接查询 有聚合函数 支持子查询 可动态绑定参数 先看一个H...

杰克鹏仔
2016/04/11
140
0
JEECG 4.0 版本发布,JAVA快速开发平台

JEECG 4.0 版本发布,系统全面优化升级,更快,更稳定! 导读 ⊙平台性能优化,系统更稳定,速度闪电般提升 ⊙上传组件plupload优化改进,优化上传效果,加强浏览器兼容性 ⊙新增adminlte首页...

JEECG开源社区
08/05
3.3K
3

没有更多内容

加载失败,请刷新页面

加载更多

003-ES集群

ES 集群 详情: https://my.oschina.net/u/3635512/blog/3140294 将实验机器/etc/elasticsearch/elasticsearch.yml 中配置文件改为 cluster.name: myes   #ES集群名称node.name:......

伟大源于勇敢的开始
19分钟前
6
0
法国电力项目二期正式验收

2019年12月10日, 法国电力项目二期正式验收 并就未来的合作技术方向进行了探讨: 去中心化数据存储/搜索引擎 可信计算/零知识证明 能源虚拟机改造 出席的人有: 法国电力总部 CIO&CTO Step...

怎当她临去时秋波那一转
35分钟前
3
0
谷歌助手

参照: https://www.mxblog.com.cn/mac%E7%89%88chrome%E6%B5%8F%E8%A7%88%E5%99%A8%E5%AE%89%E8%A3%85%E8%B0%B7%E6%AD%8C%E8%AE%BF%E9%97%AE%E5%8A%A9%E6%89%8B.html......

T型人才追梦者
44分钟前
5
0
索引延迟关联

前言 今天在看代码的时候学习到了一种索引的优化,就先在此记录下来。 具体 举个例子,原sql如下: SELECT * FROM TABLE WHERE INDEX = '' LIMIT 10000, 10; 现象 就算INDEX用了查询索引,...

无敌小杰杰
今天
5
0
tomcat_jdk安装,安装zrlog,nginx代理tomcat,第二个java应用

tomcat_jdk安装 要跑tomcat 首先要安装 jdk jdk 有两个版本 一个是 open jdk,一个是 oracle jdk open jdk 是 oracle jdk 的开源版本 两个版本都可以使用 这次实验先使用 open jdk 来做 如果...

doomcat
今天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部