2017-09-21 52 views
1

我如何可以標記爲用戶的每個通知,閱讀,目前我做的標記爲已讀這樣的:Laravel通知標記每個爲已讀

路線

Route::group(['prefix' => 'notification', 'as' => 'notification.'], function() { 
    Route::delete('destroy/{userID}}', ['as' => 'destroy', 'uses' => '[email protected]']); 
}); 

控制器

public function destroy($userID) 
    { 
     $user = User::findOrFail($userID); 
     $user->unreadNotifications->map(function($n) { 
      $n->markAsRead(); 
     }); 

     return back(); 
    } 

表格

<form method="post" action="notification/destroy/{{ Auth::id() }}"> 
    {{ method_field('DELETE') }} 
    {{ csrf_field() }} 
    <button type="submit">Mark as read.</button> 
</form> 
+0

爲什麼你的路線URL和表單網址是不同的? –

+0

@PankajMakwana抱歉錯過了複製問題中的前綴,現在更新 – Jaan

+0

將通知ID作爲參數傳遞,然後測試給定的未處理通知是否與傳遞的ID匹配! – Maraboc

回答

0

如果您的表單中有一些事情是這樣的:

<form method="post" action="notification/destroy/{{ Auth::id() }}"> 
    {{ method_field('DELETE') }} 
    {{ csrf_field() }} 
    <input type="hidden" name="notification_uuid" value="{{ $notification->id }}"> 
    <button type="submit">Mark as read.</button> 
</form> 

所有你需要做的就是在地圖方法添加一個測試是這樣的:

public function destroy($userID, , Request $request) 
{ 
    $user = User::findOrFail($userID); 
    $user->unreadNotifications->map(function($n) use($request) { 
     if($n->id == $request->get('notification_uuid')){ 
      $n->markAsRead(); 
     } 
    }); 

    return back(); 
} 
+0

嗨,謝謝,奇怪的是notification_uuid是undefined裏面的map函數,但是在ist外面定義的 – Jaan

+0

請求變量在map函數中是undefined – Jaan

+0

我忘了添加使用說明檢查我的更新;) – Maraboc