2015-09-16 6 views
1

Я пытаюсь удалить одну запись по id. Вместо этого он удаляет все записи в этой таблице.Laravel Eloquent удалить по id

Вот мой код:

Посмотреть

<form role="form" action="{{ route('status.delete', ['statusId' => $status->id]) }}" method="post"> 
    <button type="submit" class="btn btn-default"><i class="fa fa-times"></i> Delete</button> 
    <input type="hidden" name="_token" value="{{ Session::token() }}"> 
</form> 

Маршруты

Route::post('/status/{statusId}/delete', [ 
    'uses' => '\Dashboard\Http\Controllers\[email protected]', 
    'as' => 'status.delete', 
    'middleware' => ['auth'], 
]); 

Контроллер

public function deleteStatus(Request $request, $statusId) 
{ 
    Auth::user()->statuses()->delete($statusId); 

    return redirect()->route('home')->with('success', 'Post deleted.'); 
} 

Примечание: Когда я dd($statusId), он предоставляет идентификатор права для статуса, который я удаляю. Так что эта часть работает.

+0

Вы можете передать идентификатор в 'destroy' вместо' delete'. Destroy игнорирует события 'delete 'и' deleted'. – user2094178

ответ

3

К сожалению, конструктор Eloquent не поддерживает передачу идентификатора delete.

Вместо этого, вы должны сначала найти в модели, а затем вызвать delete на нем:

$request->user()->statuses()->findOrFail($statusId)->delete(); 
+0

А теперь я понял, что могу передать идентификатор, спасибо за вашу помощь, которая сейчас работает! – Sam

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