2017-04-23 7 views
0

私のスキーマは次のとおりです。教師についてはデータを保存するには

  • 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([]) 教師フォームと大学と生徒のテーブルから提出するときに、大学と教員のテーブルに値を保存するにはどうすればいいですか?

+1

2つの別々の 'if'文の代わりに' else'文を使うのはなぜですか? – imrealashu

答えて

1

このように使うのではなく、単純にifelseというステートメントを使用すると、そのようになります。

例:

$university = University::create([ 
    'university_id' =>$universityID, 
    'category' => $category, 
    'name' => $name 
]); 

if($category == 'Teacher') { 
    Teacher::create([ 
     'university_id' => $university->id, 
     'position' => $position, 
     'courses' => $course, 
     'salary' => $salary 
    ]); 
else if($category == 'Student') { 
    Student::create([ 
     'university_id' => $university->id, 
     'year' => $year, 
     'semester' => $semester, 
     'programme' => $programme, 
     'rollNum' => $roll 
    ]); 
}else{ 
    //Unknown Category name 
} 

それはあなたのために働くなら、私に教えてください。私はそれがとてもシンプルでまっすぐであることを見ている。

+0

そのような愚かな間違いは私がしました。どうもありがとうございます。 – cnayak

+0

私たちはすべて時々間違いを犯します。がんばろう。 – imrealashu

関連する問題