2016-05-03 16 views
-1

Hier ist das Szenario ist, aktualisieren: 1. Teacher 2. Course 3. Course Assign to TeacherWie ein ähnliches Modell in Laravel Eloquent

In Teacher Modell/Tabelle gibt es zwei Spalten benannt: credit_taken und remaining_credit (default 0) und in der Course Modell/Tabelle gibt es eine course_credit Spalte.

So, hier ist das Problem: im Modell/table Course Assign to Teacher wenn ein Teacher nimmt ein Course der Wert dieser Spalte sollte wie folgt berechnet werden: remaining_credit = credit_taken - course_credit

ich das umgesetzt haben, aber statt des Werts, der in der Datenbank aktualisiert wird, erstellt es eine neue Zeile in der Tabelle Teachers.

Hier ist mein Controller:

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

Wie ich oben zwei Spalten in dem Lehrer Tabelle aktualisiere stattdessen einen neuen Datensatz einzufügen.

+1

Bei der Überprüfung dieser Frage über 3 Mal verstehe ich nicht Ihre Datenbankstruktur. Bitte überprüfen und bearbeiten Sie Ihre Frage mit dem Schwerpunkt auf Konsistenz bei der Benennung Ihrer Modelle und Tabellen. Du sagst in deiner Frage, dass du einen neuen "Lehrer" -Datensatz durch deinen Code erstellt hast, aber in deinem Code erstellst du ein neues Objekt mit dem Namen 'AssignTeacher', das wie dein anderes Modell' Course Assign to Teacher' klingt. SEHR VERWIRREND! Bitte helfen Sie uns, Ihnen zu helfen. – haakym

+0

Außerdem verstehe ich nicht, wie Ihr Code überhaupt funktioniert, da Sie Methoden auf eine '$ teacher'- und' $ course'-Variable aufrufen, die nicht einmal deklariert sind !? – haakym

+0

Sehen Sie hier 3 Tabellen mit 3 Modellen. Teacher-Tabelle hat Spalten wie "credit_taken", "restant_credit" und Kurstabelle hat 'course_name',' course course' und ich benutze eine andere Tabelle 'Course Assign To Teacher' und hier Im courses_id der Kurse Tabelle und teacher_id des Lehrertisches. In der Ansichtsseite nehme ich diese Daten, deshalb Im Erstellen eines neuen Objekts wie 'Course Assign to Teacher', um die Daten zu speichern. – User57

Antwort

1

versuchen mit diesem:

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

und wenn Sie wollen natürlich einfügen sollte $ Kurs = new Course() schaffen werden;

Verwandte Themen