私のスキーマは次のとおりです。教師についてはデータを保存するには
- :
Schema::create('persons', function (Blueprint $table) { $table->bigInteger('university_id')->unique()->unsigned(); $table->string('category'); $table->string('name'); $table->timestamps(); }); Schema::create('teachers', function (Blueprint $table) { $table->increments('teacher_id'); $table->bigInteger('university_id')->unsigned(); $table->string('position'); $table->string('courses'); $table->integer('salary'); $table->timestamps(); }); Schema::create('students', function (Blueprint $table) { $table->increments('student_id'); $table->bigInteger('university_id')->unsigned(); $table->string('year'); $table->string('semester'); $table->string('programme'); $table->integer('rollNum'); $table->timestamps(); });
私は2つのフィールドを持つフォームを持っている大学のID、名前、カテゴリー、職位、コース、給与
- 学生用:大学ID、名前、カテゴリ、年、学期、プログラム、ロール数
以下のように、私のコントローラを介してデータベースにデータを格納しようとしました: すべてのデータをフォームから変数に要求した後、次のようにデータを格納しようとしました。私は教師のフォームを送信すると
University::create([
'university_id' =>$universityID,
'category' => $category,
'name' => $name
]);
//I passed values of category as Teacher when submitting from teacher form
//and Student while submitting student form.
if($category == 'Teacher'){
Teacher::create([
'university_id' => $universityID,
'position' => $position,
'courses' => $course,
'salary' => $salary
]);
}
if($category == 'Student'){
Student::create([
'university_id' => $universityID,
'year' => $year,
'semester' => $semester,
'programme' => $programme,
'rollNum' => $roll
]);
}
、私はデータのみを大学や教員のテーブルに格納されることを期待していた、それがなかったです。しかし予期しない問題が発生しました。 StudentテーブルはNull値で埋められました。条件が実行を妨げるかどうかを期待していましたStudent::create([])
教師フォームと大学と生徒のテーブルから提出するときに、大学と教員のテーブルに値を保存するにはどうすればいいですか?
2つの別々の 'if'文の代わりに' else'文を使うのはなぜですか? – imrealashu