如果涉及多个表,我应该如何命名模型?
例如,
// for students table
class Students extends Model{
function addStudent(){
//code
};
function editStudent($id){
//code
};
function deleteStudent($id){
//code
};
function viewStudent($id){
//code
};
function viewStudents(){
//code
};
}
//教授表
class Professors extends Model{
function addProfessor(){
//code
};
function editProfessor($id){
//code
};
function deleteProfessor($id){
//code
};
function viewProfessor($id){
//code
};
function viewProfessors(){
//code
};
}
如果我想和他们的教授一起展示未成年人,那么是否应该像一个单独的模型一样,
class StudentsProfessors extends Model{
function get_students_professors(){
// $query = SELECT s.name, p.name FROM students AS s, professors AS p WHERE s.id=p.id
}
}
或者,上面的方法,函数get_students_professors可以写在Students类或教授类中。
最佳做法是什么?
答案 0 :(得分:1)
CodeIgniters MVC实现是一大堆[删除亵渎]。我建议你自己组织关系。将教授模型的实例传递给学生模型并颠倒。
这样你就可以做到以下几点: $这个 - >以学生为>在( '教授') - >获取(1);或类似的东西。
您可能需要破解CI的模型才能实现此目的。
已经有一些实现看起来有点稳固(仅从文档中看到)。 看看这个:https://github.com/jamierumbelow/codeigniter-base-model
答案 1 :(得分:1)
由于这个问题有许多不同的答案,原因有很多不同的原因,最好的办法就是问问自己最合乎逻辑的行为并采取相应的行动。最糟糕的情况是,一年后你会回来并意识到“为什么我不喜欢这样做”,你将来学习如何做到这一点。
在您的情况下,我不创建新模型。如果你为表之间的每个关系创建一个新模型,你最终会得到一个 lot 模型来最终跟踪。
除了你的实际问题,camelCasing和重复的名字是我会改变的。我宁愿$this->students->add()
超过$this->students->addStudent()
,我个人甚至会合并两个view
函数来执行相同的操作,但附加WHERE
和LIMIT
是值给出了。
我只是将该函数放在最相关的模型中。在您的示例中,它们看起来同样相关,因此我只需在Students
中添加名为join_with_professors
,view_join_professors
或类似的函数。在给定的情况下,我通常会得到最好的函数名称。