php表关联,[实例代码] 浅谈FleaPHP中的表关联!

复制内容到剪贴板

代码:

//学生表对应的类

class Model_Student extends FLEA_Db_TableDataGateway{

var $tableName = 'student';

var $primaryKey = 'stu_id';

/*

这是一对一关系,一个学生对应唯一的一个Record档案

tableClass 对应要与之关联一对一的表的对象类,即档案表的类

foreignKey是在档案表中,对应学生表的一个外键接连字段,

用该字段标识该档案属于哪个学生

mappingName 就是用于在你查询学生信息时,学生档案字段的别名

*/

var $hasOne = array(

'tableClass' => 'Model_Record',

'foreignKey' => 'stu_id',

'mappingName' => 'record'

);

/*

这是从属关系,一个学生属于某一个班级,换过来说就是班级与学生一对多,

一个班级有多个学生,而学生就只属于一个班级

tableClass 指定该类要与之有从属关系的类,这里是班级类

foreignKey 这里指定的是该表里的连接外表的字段,这里是学生表的班级ID字段

注意:这里的foreignKey指的是本表的字段,而上面hasOne关系中的foreignKey

指的是外表中的字段,要注意区分清楚

mappingName这里就不多说了,跟上面的一样,也是用于显示区分的别名

*/

var $belongsTo = array(

array(

'tableClass' => 'Model_Classes',

'foreignKey' => 'stu_class_id',

'mappingName' => 'class'

)

);

}

//档案表对应的类

class Model_Record extends FLEA_Db_TableDataGateway{

var $tableName = 'stu_record';

var $primaryKey = 'record_id';

}

//教师表对应的类

class Model_Teacher extends FLEA_Db_TableDataGateway{

var $tableName = 'teacher';

var $primaryKey = 'teacher_id';

/*

这里确立了教师与班级的多对多关系,一个教师可以教多个班级

而一个班级也有多个教师

tableClass 指定要建立多对多关系的表的类

joinTable 这个属性要注意一个,这个是指定教师表与班级表关系的连接表

由于二维表的数据结构的原因,所以多对多关系要用一个中间表(即连接表)来表示

连接表中就指明两个表各自的主键ID就可以了,以两个字段作复合主键,如不用复合

主键,就新增加一个字段作主键也可,这没关系

*/

var $manyToMany = array(

array(

'tableClass' => 'Model_Classes',

'mappingName' => 'class',

'joinTable' => 'link_teacher_classes',

)

);

}

class Model_Classes extends FLEA_Db_TableDataGateway{

var $tableName = 'classes';

var $primaryKey = 'class_id';

/*

这里确立了班级与学生的一对多关系

tableClass 指定该表的类要与哪个表的类建立一对多关系

foreignKey 外键ID,这里即指定学生表中定义的班级ID,这个是外表的字段

*/

var $hasMany = array(

array(

'tableClass' => 'Model_Student',

'foreignKey' => 'stu_class_id',

'mappingName' => 'students'

)

);

var $manyToMany = array(

// 由于多对多关系是双向的,所以班级表也可以定义上与教师表的多对多关系

// 也可以不写,看需求而定,比如你想查看某个班级信息时,一并显示该班

// 有多少个任课老师的话,那就在这个班级类里加上关系,我这里就不写了。。。

);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值