【发布时间】:2021-07-27 05:37:05
【问题描述】:
我想为每个学生在不同年级(10 年级、11 年级、12 年级)的多个科目打分现在我选择每个学生 ID,我可以为每个学生存储分数,但我想避免每个年级和科目的重复输入. 例如,如果我在 10 年级的数学科目中给出 50 分,同样如果我想在 10 年级的数学科目中加分,系统不应接受并抛出重复输入的消息。 注意:我使用的是 Laravel 7
这是我的 MarkController 存储方法:
公共函数存储(请求 $request) {
$this->validate($request, [
'subject_id' => 'integer',
'grade_id' => 'required',
'final_marks' => 'required',
]);
$getMarks = Mark::where('student_id',$request->student_id)->first();
if($getMarks->subject_id != $request->subject_id ){
if($getMarks->grade_id != $request->grade_id){
$marks = new Mark();
$marks->student_id = request('student_id');
$marks->subject_id = $request->subject_id;
$marks->grade_id = $request->grade_id;
$marks->final_marks = $request->final_marks;
//dd('New Marks added');
$marks->save();
}
}else{
dd('duplicate entry');
}
return back()->with('marks-created-message', 'Marks added');
}
这是我的分数表
public function up()
{
Schema::create('marks', function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger('student_id');
$table->unsignedInteger('subject_id');
$table->unsignedTinyInteger('grade_id');
$table->double('final_marks',8,2);
$table->timestamps();
});
Schema::table('marks', function(Blueprint $table){
$table->foreign('student_id')->references('id')->on('students');
$table->foreign('subject_id')->references('id')->on('subjects');
$table->foreign('grade_id')->references('id')->on('grades');
});
【问题讨论】:
-
所以您希望
grade_id和final_marks需要唯一? -
@Espresso 我需要 subject_id 和grade_id 在输入后是唯一的。第二次它不应该允许输入相同科目和年级的分数。
-
那你需要再定义一个自定义规则
标签: laravel eloquent duplicates laravel-7 laravel-validation