【问题标题】:How to update a related model in Laravel Eloquent如何在 Laravel Eloquent 中更新相关模型
【发布时间】:2016-08-28 05:29:09
【问题描述】:

这里的场景是,我有 3 个模型/表: 1.Teacher 2.Course 3.Course Assign to Teacher

Teacher 模型/表中有两列名为:credit_takenremaining_credit (default 0),在Course 模型/表中有一个course_credit 列。

所以问题出在这里:在模型/表Course Assign to Teacher 中,当Teacher 采用Course 时,该列的值应该这样计算: 剩余学分 = credit_taken - course_credit

我已经实现了这一点,但是它不是在数据库中更新值,而是在 Teachers 表中创建一个新行。

这是我的控制器:

public function postcourseAssignTeacher(Request $request)
{
    $assignTeacher = new AssignTeacher();
    $assignTeacher->teacher_id = $request->Input(['teacher_id']);

    $teacher->credit_taken = $request->Input(['credit_taken']);
    $teacher->remaining_credit = $request->Input('remaining_credit');

    $assignTeacher->course_id = $request->input('course_id');

    $course->name = $request->Input('name');
    $course->credit = $request->Input('credit');

    $teacher->remaining_credit = $teacher->credit_taken -$course->credit;

    $assignTeacher->save();
    //    $course->save();

    $teacher->update();

    return redirect('courseAssignTeacherPage');
}

如何更新教师表中以上两列而不是插入新记录。

【问题讨论】:

  • 在审查这个问题大约 3 次后,我不明白您的数据库结构。请查看并编辑您的问题,重点关注模型和表格命名的一致性。您在问题中说您通过代码创建了一个新的Teacher 记录,但在您的代码中创建了一个名为AssignTeacher 的新对象,这听起来像您的其他模型Course Assign to Teacher。很混乱!请帮助我们帮助您。
  • 另外,我不明白你的代码是如何工作的,因为你正在调用 $teacher$course 甚至没有声明的变量上的方法!?
  • 见这里 3 表 3 模型。教师表有credit_takenremaining_credit 等列,课程表有course_namecourse credit 和我使用另一个表Course Assign To Teacher,这里我保留课程表的课程ID 和教师表的教师ID。在视图页面中,我正在获取这些数据,这就是为什么我创建像 Course Assign to Teacher 这样的新对象来保存数据。
  • 您在问题中将模型称为Course Assign To Teacher,然后在代码中将其称为AssignTeacher,这真的很令人困惑!您应该做的是使用 Eloquent 的关系添加相关记录:laravel.com/docs/5.2/eloquent-relationships

标签: php laravel laravel-5 eloquent


【解决方案1】:

试试这个:

public function postcourseAssignTeacher(Request $request)
{
    $assignTeacher = new AssignTeacher();
    $assignTeacher->teacher_id = $request->Input(['teacher_id']);


$teacher=Teacher::find(Input($request->['teacher_id']);


 $teacher->credit_taken = $request->Input(['credit_taken']);
    $teacher->remaining_credit = $request->Input('remaining_credit');

    $assignTeacher->course_id = $request->input('course_id');

    $course->name = $request->Input('name');
    $course->credit = $request->Input('credit');

    $teacher->remaining_credit = $teacher->credit_taken -$course->credit;

    $assignTeacher->save();
    //    $course->save();

    $teacher->update();

    return redirect('courseAssignTeacherPage');
}

如果你想插入课程应该创建 $course=new Course();

【讨论】:

    猜你喜欢
    • 2013-11-22
    • 2015-10-23
    • 2021-09-18
    • 2017-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多