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 后台中的实现 下拉列表查询、绑定等应用

<?php

return 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

Php Laravel框架 多表关系处理 之 Eloquent一对多关系处理的更多相关文章

  1. Struts2框架下表单数据的流向以及映射关系

    本例框架很简单:默认页面为用户登录界面login.jsp,提交后由action类LoginAction.java来判断成功或失败,登录结果分别由success.jsp和failure.jsp呈现. 一 ...

  2. laravel框架手动删除迁移文件后再次创建报错

    手动删除laravel框架数据表迁移文件后再次创建报错 如下图: 执行创建操作之后会在autoload_static.php及autoload_classmap.php这两个文件中添加迁移文件的目录. ...

  3. Django框架----跨表查询及添加记录

    一:创建表 书籍模型: 书籍有书名和出版日期,一本书可能会有多个作者,一个作者也可以写多本书,所以作者和书籍的关系就是多对多的关联关系(many-to-many);     一本书只应该由一个出版商出 ...

  4. Openstack_SQLAlchemy_一对多关系表的多表插入实现

    目录 目录 Openstack 与 SQLAlchemy 一个多表插入的 Demo 小结 Openstack 与 SQLAlchemy SQLAlchemy 是 Python 语言下的一款开源软件,它 ...

  5. Laravel5.1 模型 --一对多关系

    一对多关系算是比较常用的一种关联关系了,关于一对多我们可以用 文章对应评论 来举例:一篇文章可以有多个评论,但是一个评论只属于一篇文章. 这就是一对多关系. 1 实现一对多关系 我们先来准备两个模型, ...

  6. 菜鸟学习Hibernate——一对多关系映射

    Hibernate中的关系映射,最常见的关系映射之一就是一对多关系映射例如学生与班级的关系,一个班级对应多个学生.如图: Hibernate中如何来映射这两个的关系呢? 下面就为大家讲解一下: 1.创 ...

  7. Laravel 框架对于分表进行统计合并查询的思路

    当对数据表进行水平分表之后,若要进行数据统计,往往需要对所有分表一起进行联合查询.在使用 Laravel 框架时,可以利用 Model 类的 setTable 方法对于多个表进行合并查询. 举个例子, ...

  8. laravel框架入门

    本文摘自网络,个人感觉写的很不错,决定收藏一下纯属本人学习之用 本文介绍如何开始使用 Laravel. 读完本文,你将学到: 如何安装 Laravel,新建 Laravel 程序,如何连接数据库: L ...

  9. 关于Laravel框架

    第1讲-Laravel介绍 1.1 什么是Laravel laravel是目前一个比较主流的框架,现在很多互联网的公司都在使用该框架.该框架的前身是symfony框架 Laravel的定位就是做一个简 ...

随机推荐

  1. 使用EditText搜索listview里面的内容,实现Listview跟随变动的情况

    1.布局的XML文件里面添加EditText控件(省略)控件id=mSearch ListView的id=admin_lv; 2.一.获取ListView展示的数据(通过适配器获取) 二.这个是我要说 ...

  2. 开源的Android开发框架-------PowerFramework使用心得(二)图片异步加载ImageTask

    图片异步加载.可以备注图片是否缓存.缓存状态. 1.缓存-SD卡,路径可设置 2.图片压缩 3.可加载本地和网络图片 4.url为本地视频文件可以显示缩略图 5.中文url图片地址FileNotFou ...

  3. Design Pattern —— Singleton

    Design Pattern —— Singleton   强力推荐枚举和类级内部类方式实现单例模式 单例模式是开发中非常常用的一种模式,简单的说,我们希望一个类永远都只有一个对象. 主要有两个用途: ...

  4. for update和for update nowait的区别和使用

    首先,for update 和for update nowait 是对操作的数据行进行加锁,在事务提交前防止其他操作对数据的修改. for update 和for update nowait主要区别在 ...

  5. 使用Spring MVC,Mybatis框架等创建Java Web项目时各种前期准备的配置文件内容

    1.pom.xml 首先,pom.xml文件,里面包含各种maven的依赖,代码如下: <project xmlns="http://maven.apache.org/POM/4.0. ...

  6. C++变量的“总分性”(Mereology)

    Stroustrup 在自传中说自己在哲学上深受 Kierkegaard (吉爾凱高爾)的影响,而讨厌黑格尔.所以看 Stroustrup 的书,很少感受到抽象理论的重要性.这也影响了C++的文化:许 ...

  7. 【USACO 2.4.5】分数化小数

    [描述] 写一个程序,输入一个形如N/D的分数(N是分子,D是分母),输出它的小数形式. 如果小数有循环节的话,把循环节放在一对圆括号中. 例如, 1/3 =0.33333333 写成0.(3), 4 ...

  8. work登录页

  9. css margin collapse

    css中存在margin collapse,即边界塌陷或边界重叠. http://www.w3cplus.com/css/understanding-bfc-and-margin-collapse.h ...

  10. MySql数据库索引优化注意事项

    设计好MySql的索引可以让你的数据库飞起来,大大的提高数据库效率.设计MySql索引的时候有一下几点注意: 1,创建索引 对于查询占主要的应用来说,索引显得尤为重要.很多时候性能问题很简单的就是因为 ...