Php Laravel框架 多表关系处理 之 Eloquent一对多关系处理
Php Laravel框架 多表关系处理 之 Eloquent一对多关系处理
本博文主要介绍 Laravel 框架中 Eloquent 对一对多关系的处理以及在 Laravel Administrator(后台扩展包)中的应用。
您的数据库可能是彼此相关的。比方,一篇博客文章可能有很多评论,或者一个订单与下订单的用户相关。Eloquent 使得管理和处理这些关系变得简单。Laravel 提供了四种类型的关系: -一对一 -一对多 -多对多 - 多态关系
一对多
一个一对多关系的样例是一篇博客文章有很多评论或者一个课程有的多次分数信息等。
我们能够像这样定义关系模型 Model:
<?php
/*** sobjectinfo:课程信息表 Model* soc_id :主键自增* soc_name :课程名* soc_teacher:授课老师**/
class SobjectInfo extends Eloquent {//自己定义表名(protected $table)protected $table = 'sobjectinfo';//自己定义主键(protected $primaryKey)protected $primaryKey = 'soc_id';//关闭 创建时间 与 更新时间 的自己主动维护(protected $timestamps)public $timestamps = false;/** 定义一对多关系*/public function Scoreinfo(){return $this -> hasMany('Scoreinfo','soc_id');}
}?>
定义与之相应的逆向关系 Model:
<?php
/*** scoreinfo:分数信息表 Model* so_id :主键自增* s_id :学生信息表(stuinfo)主键* soc_id :课程信息表(sobjectinfo)主键* score :分数*/
class ScoreInfo extends Eloquent {//自己定义表名(protected $table)protected $table = 'scoreinfo';//自己定义主键(protected $primaryKey)protected $primaryKey = 'so_id';//关闭 创建时间 与 更新时间 的自己主动维护(protected $timestamps)public $timestamps = false;/** 分数表(ScoreInfo)与课程表(SobjectInfo)、学生信息表(StuInfo)有主外键关系* 而且是一对多的关系*/public function StuInfo(){return $this -> belongsTo('StuInfo','s_id');}/** 定义逆向关系指向主键表* */public function SobjectInfo(){return $this -> belongsTo('SobjectInfo','soc_id');}
} ?
>
通过以上步骤的处理。表与表之间的一对多关系已确立,
以下将介绍在Laravel Administrato 后台中的实现 下拉列表查询、绑定等应用
<?phpreturn array('title' => '分数信息', //栏目名'single' => ' >>', //新建描写叙述'model' => 'ScoreInfo', //分数信息'form_width' => 960, //左边栏目宽//列表'columns' => array('so_id' => array('title' => '编号','select' => "so_id",'sort_field'=>'so_id'),'s_name'=>array('title'=>'学生姓名','relationship' => 'StuInfo','select' => '(:table).s_name',),'soc_name'=>array('title'=>'课程名称','relationship' => 'SobjectInfo','select' => '(:table).soc_name',),'score'=>array('title'=>'考试分数','select'=>'score'),),//筛选信息'filters' => array('so_id' => array('title'=>'编号'),'SobjectInfo'=>array('type' => 'relationship','title' => '课程名''name_field' => 'soc_name',),'StuInfo'=>array('type' => 'relationship','title' => '学生姓名','name_field' => 's_name',),'score'=>array('title'=>'考试分数','type' => 'number'),),//改动、新增'edit_fields' => array('StuInfo'=>array('type' => 'relationship','title' => '学生姓名','name_field' => 's_name',),'SobjectInfo'=>array('type' => 'relationship','title' => '课程名','name_field' => 'soc_name',),'score'=>array('title'=>'考试分数','type'=>'text'),));?>
以上演示样例展示的是 后台 分数信息 类。
演示样例中多次使用到 “学生姓名”、“课程名”,尽管他们存储在不同的表中,但因为我们之前在 Model中已建立了它们之间的 一对多关系,因此我们能够自由搭配组合
效果图例如以下:
10个Laravel4开发者必用扩展包:
http://blog.csdn.net/yimiyuangguang/article/details/39756115
Laravel Administrator 文档
http://administrator.frozennode.com/docs/field-type-relationship
Laravel4 中文帮助手冊:
http://pan.baidu.com/s/1jGl6cqa
转载于:https://www.cnblogs.com/yxwkf/p/5278068.html
Php Laravel框架 多表关系处理 之 Eloquent一对多关系处理相关推荐
- Mybatis学习笔记 4:Mybatis 连表查询(一)——一对多关系
完整代码在这 在查询数据库时,我们经常会遇到多张表联合查询的情况,而Mybatis使连表查询更加简便了,查询出的数据格式非常易于使用,省去了一大部分复杂的代码编写工作,对于关系型数据库来说,数据模型之 ...
- python和表格关系_python – 单表继承上的SQLAlchemy一对多关系...
我之前正在努力解决这个问题.我能够让这种自我指涉关系发挥作用: class Employee(Base): __tablename__ = 'employee' id = Column(Integer ...
- Laravel框架中数据库分表时Model使用方法
前言: 0.最近在使用laravel框架做MySQL分表的时候经过实践和踩坑,总结了以下3种可行的分表方法,亲测可用. 1.本人公司做的是SaaS系统,以店铺为维度.店铺id(shop_id) 命名规 ...
- 【Hibernate】Hibernate实体关系映射——单边的多对一关系
单边的多对一关系 单边的多对一关系与单边的一对多关系刚好相反,多方有一方的引用,一方没有多方的引用,但是他们的数据表间的关系是一样的.例如:论文与论文类别: 具体实现如下: Type实体类的java注 ...
- 【Hibernate】Hibernate实体映射——单边的一对多关系
数据库中的表是有关系的,两个表之间可以通过外键关联.如果把表抽象为实体类,这些关系可以抽象为实体之间的一对一,一对多,多对一等关系.hibernate能处理这些复杂的关系,前提是要正确配置这些关系. ...
- 什么是数据库中的一对多关系?
一对多关系是最常见的数据库关系之一.如果您想了解何时以及如何使用一对多关系,那么本文是一个很好的起点. 您肯定会使用一对多关系将信息存储在任何关系数据库中,无论您是在设计企业级软件还是只是创建一个简单 ...
- Spring Data JAP框架处理表关系的步骤(一对一主键关联
Spring Data JAP框架处理表关系的步骤: 1)确定表和表之间的关系 2)对应表创建实体类 3)在实体类配置注解关联关系 4)测试 一对一表关系的实现方案(主键关联: 1 在Customer ...
- Spring Data JAP框架处理表关系的步骤(一对一外键关联
Spring Data JAP框架处理表关系的步骤: 1)确定表和表之间的关系 2)对应表创建实体类 3)在实体类配置注解关联关系 4)测试 一对一表关系的实现方案(外键关联: 1 在Customer ...
- Laravel框架01:composer和Laravel简介
Laravel框架01:composer和Laravel简介 一.Composer介绍 二.创建Laravel项目 三.Laravel目录结构 四.Laravel启动方式 一.Composer介绍 c ...
最新文章
- SharePoint 如何找到List的Template ID
- 关于STM32的变量定义
- jTemplates 学习使用笔记
- 大话网站---从Hello World到高并发网站
- python 解析xml格式_Python解析XML文件
- 利用scp 远程上传下载文件/文件夹
- 反射之关于MethodInfo的使用
- 2019 第二周 开发笔记
- PubMed插件神器之PubMedy和Scholarscope(末尾附赠Google截屏神器)
- 单点登录原理以及简单实现
- linux修改挂载文件系统权限,Linux配置启动挂载:fstab文件详解
- STM32——WAVWM8978简介
- 驭见新知 | 给无人车戴上VR眼镜是种什么体验?
- db是哪个城市的缩写_全国所有城市拼音及缩写
- 苹果6s html5分数,iPhone 6s Plus的屏幕尺寸是多少?分辨率是多少?
- 【产品】产品设计:美工线的设计
- Nand flash 三种类型SLC,MLC,TLC
- 中专计算机英语词汇,中职英语新课标词汇表.doc
- Android Studio clean 时产生 Error:Execution failed for task ':app:mockableAndroidJar' java.lang.NullP
- JavaScript匿名函数和闭包