2017-10-04 6 views
2

Ich möchte den Status einer Aufgabe ändern. Ich habe eine status_id Spalte in der Datenbank und 1 ist abgeschlossen. Ich würde den Klick auf den Button mag die status_id bis 1Laravel Ändern der Datenbankspalte, wenn auf die Schaltfläche geklickt wird

Meine Route

Route::patch('/tasks/completed/{Task}', '[email protected]')->name('completedUpdate'); 

Meine Taste

<form action="{{ route('completedUpdate', $task->id) }}" method="POST"> 
    {{ csrf_field() }} 
    {{ method_field('PATCH') }} 
    <button type="submit" class="button is-inverted" style="margin-top: 10px;">Mark Complete</button> 
    </form> 

Mein Controller

public function completedUpdate(Request $request, $task) 
{ 
    $task->status_id = $request->status_id; 

    $task->save; 

    return redirect()->back()->with('message', 'task marked complete'); 
} 

der Fehler zu ändern, es gibt mir ist:

Versuch Eigenschaft von nicht-Objekt

ich zuweisen lassen, ob mehr Infos

Antwort

1

sollten Sie ändern.

auch wahrscheinlich statt:

/tasks/completed/{Task} 

sollten Sie verwenden:

/tasks/completed/{task} 
+0

ok danke! Wie kann der Controller die status_id in 1 ändern? –

+0

Dies geschieht in dieser Zeile '$ task-> status_id = $ request-> status_id;' - Sie senden 1 in '$ request-> status_id', so dass es auf 1 und gesetzt ist In der nächsten Zeile ist es gespeichert –

1

$task->save; benötigt werden, sollen $task->save();

Mit sein, es ist auf der Suche nach einer Immobilie auf dem Modell daher die Fehlermeldung "eine Eigenschaft zuweisen". Dagegen ruft ->save() die Speichermethode für das Objekt auf.

+0

Thank you! Ich werde daran erinnern, dass über speichern –

0

In Ihrem Controller geben Sie $task->status_id einen Wert von $request->status_id, aber Sie geben die status_id in Ihrem Formular nicht in Ihrem HTML-Code. Sie können ein verstecktes Element in Ihr Formular einfügen, das <input name="status_id" value="1" /> ist.

In der Zwischenzeit nicht vergessen, dass $task->save;$task->save();

Viel Glück sein!

public function completedUpdate(Request $request, $task) 
{ 
    $task->status_id = $request->status_id; 

    $task->save; 

    return redirect()->back()->with('message', 'task marked complete'); 
} 

in:

public function completedUpdate(Request $request, Task $task) 
{ 
    $task->status_id = $request->status_id; 

    $task->save(); 

    return redirect()->back()->with('message', 'task marked complete'); 
} 

so müssen Sie Art von $ Aufgabe Variable typehint und save() Methode statt save Eigenschaft

+0

ok danke! Ich habe diese Eingabe in das Formular eingefügt und ausgeblendet, aber muss ich etwas zum Controller hinzufügen? –

+0

@ L.Fox Nein, wirst du nicht. Sie müssen es nur irgendwo in Ihrem Controller angeben, dass Sie die Spalte auf 1 setzen möchten, Sie können es hart codieren oder eine verborgene Eingabe in dem übermittelten Formular verwenden. – jmosawy

+0

Süße danke! Ich habe es funktioniert –

Verwandte Themen