私は3つのモデルを持っています:Student、Course、およびStudentCourse。コース 'hasAndBelongsToMany'学生、学生 'hasMany'コース、およびStudentCourse 'belongsTo'学生とコース。生徒がコースに登録する前に、いくつかのことをチェックする必要があります(コースが満員で、過去にそのコースを受講したことなどあります)。私は関数内のロジックを扱うことができますが、どのモデルをその関数の下に置くべきですか?そして、どのように呼び出されるべきですか?CakePHP:この関数を配置する場所
// Student Model
public function canSignupForCourse($studentId, $courseId) {
// is the course full?
// have they signed up before, etc
// return either true or false
}
// Could it then be called anywhere as:
if($this->Student->canSignupForCourse($studentId, $courseId)) {
// etc
}
それとも、それを行うには良い/簡単な方法がある(と、私はstudentidの両方を送信し、毎回courseidする必要があります):私は考える一つの方法でしたか?
これを使用して、新しいCourseMembershipを作成するにはどうすればよいですか(どのようにcourse_idとstudent_idを設定できますか)。 – execv
他のモデルと同じです。生徒がログインしてコースに登録しようとしているとします。彼の学生IDはhttp://book.cakephp.org/2.0/en/core-libraries/components/authentication.html#accessing-the-logged-in-userのようなものでアクセスできます。 course_idは投稿データとともに提出する必要があります。あなたのコントローラーでstudent_idを$ this-> request-> dataに追加し、 $ this-> CourseMembership-> create();と呼ぶことができます。 $ this-> CourseMembership-> save($ this-> request-> data); これについてのすばらしいことは、特定のメンバーシップに出席や成績などの追加情報を追加できることです – Vigrond