首页 新闻 会员 周边

问:面向对象中的关联应该是在数据库读取时采用Join,还是取出后组合?

0
悬赏园豆:10 [待解决问题]

对于面向对象逐渐似乎有了一点思路,但似乎又是捕风捉影,没有经过实践的认识总是纸上得来终觉浅。

面向对象编程的思想关注点是理清系统中存在的对象,通过对象的协作完成系统功能。

问题场景:班级管理。

对象分析: 学生,班级,班委,班主任。

数据库中,我设计了4张表;

1、学生表

2、班级表(假设一个班只有一个班主任)

3、班委表

问:当获取某个班级的所有学生时,因为之中存储的都是学生的id或者学号,如果需要学生的名字一般的做法是直接join。

但是面向对象,他们都是对象。应该如何操作?

<?php
class BanJi {
     private $id;
     private $name;
     function __constructor($id){
        $this->id=$id;
     }
     ...;
     public function getStudents(){
          $sql="select * from students where class_id='".$this->id."'";
          $db=new mysql();
          return $db->query($sql):
    }    
}
$banJi1= new BanJi(11);
$students=banJi1->getStudents();
//???
?>
kelite的主页 kelite | 初学一级 | 园豆:184
提问于:2013-05-04 20:09
< >
分享
所有回答(1)
0

面向对象,实体型映射时,遇到多表。。只有两招:

1:通过多表查询SQL语句,最终转化表处理,也可以转成新实体(集合多个表属性的实体)。

2:参考第1条。

路过秋天 | 园豆:4787 (老鸟四级) | 2013-05-04 22:01

能具体点吗?

第一条不太明白~  呵呵

如果是join完了,找到名字  就没对象什么事了~  对吧?

转成新实体的意思是?

根据sql出来的学生id,在sql一次弄成一个学生对象?

支持(0) 反对(0) kelite | 园豆:184 (初学一级) | 2013-05-04 22:53

@kelite: 那就直接join完后处理就可以了。不用实体。

支持(0) 反对(0) 路过秋天 | 园豆:4787 (老鸟四级) | 2013-05-05 16:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册