php - 为数据库表创建类/对象是否可以?

标签 php database oop class object

<分区>

我是一名网站 build 者,我有一些表格,是否可以始终基于该表格构建一个类并为其创建一个对象?我有一个 teacher 表(ID、USERNAME)和一个基于它的类有 giveMark()editMark() 等。另一个是student (ID,NAME) 表,包含 getMarks()getMissingHours() 等。现在因为学生和学生之间存在 N:M 关系老师们,我有一个link_teacher_student (ID,TEACHED_ID,STUDENT_ID) 表,它是一个“助手”表。我是否也应该为它创建类/对象?

最佳答案

,您不应该有link_teacher_student 表的对象。 This is common thing to do in a RDBMS structure, but not in an OOP model. OOP 模型中的相同关系很简单:

class Teacher {
    protected $students = array();
}

class Student {
    protected $teachers = array();
}

然后您将使用 DataMapper在获取 TeacherStudent 时初始化该数组,例如你的DAO会查询老师和join the students然后 Mapper 会 create Student objects并将它们填充到教师的数组中。

不过,您可以做的是将 $students$teachers 设为 Repositories并给他们 finder 方法来查询查找表,例如

class Teacher
…
    public function __construct($studentsRepository)
    {
        $this->students = $studentRepository;
    }
    public function getStudents()
    {
        return $this->students->findByTeacherId($this->id);
    }
}

class StudentRepository
…
    public function findByTeacherId($teacherId)
    {
        foreach ($this->dao->select('SELECT …', $teacherId) as $student) {
            $students[] = $this->studentBuilder->build($student);
        }
        return $students;
    }
}

关于php - 为数据库表创建类/对象是否可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6900353/

相关文章:

MySQL 将错误的数据类型导入 VARCHAR 列

php - MySQL SELECT * FROM 表 WHERE 名称 LIKE (?) OR 所有者 LIKE (?);

php - 服务器端 session 安全吗?

php - MySQL:动态确定表的主键

php - echo数据库如何分页

database - 微服务认证/授权架构

ios - 当 newValue 没有分配任何内容时,为什么这段快速代码可以工作?

javascript - jQuery Deferred/Promise 设计模式和用例

java - 引用自身的类如何工作?

php - 如何在mysql中使用外键state_id将表位置拆分为两个表状态,城市?