命名codeigniter模型

时间:2013-08-09 07:37:36

标签: php codeigniter naming-conventions

如果涉及多个表,我应该如何命名模型?

例如,

// 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类或教授类中。

最佳做法是什么?

2 个答案:

答案 0 :(得分:1)

CodeIgniters MVC实现是一大堆[删除亵渎]。我建议你自己组织关系。将教授模型的实例传递给学生模型并颠倒。

这样你就可以做到以下几点: $这个 - >以学生为>在( '教授') - >获取(1);或类似的东西。

您可能需要破解CI的模型才能实现此目的。

已经有一些实现看起来有点稳固(仅从文档中看到)。 看看这个:https://github.com/jamierumbelow/codeigniter-base-model

答案 1 :(得分:1)

由于这个问题有许多不同的答案,原因有很多不同的原因,最好的办法就是问问自己最合乎逻辑的行为并采取相应的行动。最糟糕的情况是,一年后你会回来并意识到“为什么我不喜欢这样做”,你将来学习如何做到这一点。

在您的情况下,我创建新模型。如果你为表之间的每个关系创建一个新模型,你最终会得到一个 lot 模型来最终跟踪。

除了你的实际问题,camelCasing和重复的名字是我会改变的。我宁愿$this->students->add()超过$this->students->addStudent(),我个人甚至会合并两个view函数来执行相同的操作,但附加WHERELIMIT是值给出了。


我只是将该函数放在最相关的模型中。在您的示例中,它们看起来同样相关,因此我只需在Students中添加名为join_with_professorsview_join_professors或类似的函数。在给定的情况下,我通常会得到最好的函数名称。