2017-02-18 65 views
0

在我的Laravel項目中,我有以下問題。 (爲了便於閱讀,我減少了輸出)過濾與Laravel

  1. 我從名爲Newsposts的表中獲取所有帖子。我保存這個作爲一個集合名爲$ all_posts,它看起來像這樣:
Collection {#216 ▼ 
    #items: array:7 [▼ 
    0 => NewsPost {#227 ▶} 
    1 => NewsPost {#228 ▶} 
    2 => NewsPost {#229 ▼ 
     #attributes: array:6 [▼ 
     "id" => 6 
     "title" => "Sample title" 
     "body" => "<p>Some html</p>" 
     "user_id" => 15 
     ] 
     #original: array:6 [▶] 
     #casts: [] 
     . 
     . 
     #guarded: array:1 [▶] 
    } 
    3 => NewsPost {#230 ▶} 
    4 => NewsPost {#231 ▶} 
    ] 
} 
  • 我然後叫user_read巫另一個表獲取所有條目包含所有職位目前用戶已閱讀。這個表格包含了一個用戶對'user_id'列的引用,以及對帶有'post_id'列的newsposts的引用。我還保存這個集合中,它看起來像這樣:
  • Collection {#219 ▼ 
        #items: array:2 [▼ 
        0 => UserRead {#210 ▼ 
         #attributes: array:4 [▼ 
         "user_id" => 15 
         "post_id" => 6 
         ] 
         #original: array:4 [▶] 
         #casts: [] 
         . 
         . 
         #guarded: array:1 [▶] 
        } 
        1 => UserRead {#217 ▶} 
        ] 
    } 
    
  • 所以我想現在要做的是把$ all_posts收集並刪除所有帖子從$ read_posts-collection,並將其存儲在一個新的集合中。讓我們稱它爲$ unread_posts。我怎樣才能做到這一點?
  • 回答

    1

    得到所有readed帖子ID,然後再使用過濾功能來過濾未讀帖子

    $readedPosts = $user_read->pluck('post_id'); 
    $unread_posts = $all_posts->filter(function($value) use ($readedPosts) { 
         return !in_array($value->id, $readedPosts); 
    }) 
    
    +0

    ,而你的代碼可以回答這個問題,你應該添加一些說明的代碼做什麼,爲什麼是解決了有機磷農藥的問題。 –