2016-05-03 7 views
-1

Здесь сценарий, у меня есть 3 модели/таблицы: 1. Teacher 2. Course 3. Course Assign to TeacherКак обновить связанную модель в Laravel красноречивого

В Teacher модели/таблицах Есть две колонок названный: credit_taken и remaining_credit (default 0) и в модели Course есть столбец course_credit.

Так вот проблема: в модели/таблицы Course Assign to Teacher когда Teacher принимает Course значение этого столбца должно быть рассчитано следующим образом: remaining_credit = 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'); 
} 

Как обновить выше двух столбцов в таблице учителя я вместо того, чтобы вставить новую запись.

+1

При рассмотрении этого вопроса примерно 3 раза я не понимаю вашу структуру базы данных. Просмотрите и отредактируйте свой вопрос, сосредоточив внимание на согласованности при названии своих моделей и таблиц. Вы говорите в своем вопросе, что у вас есть новая запись «Учитель», созданная с помощью вашего кода, но в коде вы создаете новый объект под названием «AssignTeacher», который походит на вашу другую модель «Курс Assign to Teacher». ОЧЕНЬ ОБЕСПЕЧЕНИЕ! Помогите нам помочь. – haakym

+0

Кроме того, я не понимаю, как ваш код работает даже при вызове методов в переменной '$ teacher' и' $ course', которые даже не объявлены !? – haakym

+0

См. Здесь 3 таблицы с 3-мя моделями. Таблица преподавателей имеет такие столбцы, как 'credit_taken',' else_credit', а в таблице курса есть 'course_name',' course credit' и Im, используя другую таблицу 'Course Assign To Teacher' и здесь Im keep courses_id таблицы курсов и teacher_id таблицы учителя. На странице просмотра я беру эти данные. Вот почему Im создает новый объект, например «Назначение курса для учителя» для сохранения данных. – User57

ответ

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'); 
} 

и если вы хотите, чтобы вставить курс следует создать $ курс = новый курс();

Смежные вопросы