2016-10-12 151 views
0

在我的論壇中,我展示了所有主題。它看起來像這樣:訂閱主題

enter image description here

這樣用戶就可以通過點擊紅色爐訂閱。

我加載的主題與此JSON:

{ 
    "forum": { 
    "id": 1, 
    "slug": "test", 
    "name": "test", 
    "description": "test", 
    "created_at": null, 
    "updated_at": null 
    }, 
    "topics": { 
    "total": 6, 
    "per_page": 5, 
    "current_page": 1, 
    "last_page": 2, 
    "next_page_url": "http://forum.dev/api/forum/test?page=2", 
    "prev_page_url": null, 
    "from": 1, 
    "to": 5, 
    "data": [ 
     { 
     "id": 1, 
     "slug": "1", 
     "name": "1", 
     "description": "1", 
     "forum_id": 1, 
     "created_at": null, 
     "updated_at": null 
     }, 
     { 
     "id": 2, 
     "slug": "2", 
     "name": "1", 
     "description": "1\t", 
     "forum_id": 1, 
     "created_at": null, 
     "updated_at": null 
     }, 
     { 
     "id": 3, 
     "slug": "1", 
     "name": "1", 
     "description": "1\t", 
     "forum_id": 1, 
     "created_at": null, 
     "updated_at": null 
     }, 
     { 
     "id": 4, 
     "slug": "1", 
     "name": "1", 
     "description": "1", 
     "forum_id": 1, 
     "created_at": null, 
     "updated_at": null 
     }, 
     { 
     "id": 5, 
     "slug": "1", 
     "name": "1", 
     "description": "1", 
     "forum_id": 1, 
     "created_at": null, 
     "updated_at": null 
     } 
    ] 
    } 
} 

我返回該^這樣的: $forum->topics()->orderBy('created_at', 'DESC')->paginate(5);

那麼,如何讓每一個話題對象的訂閱價值?

所以這樣的:

"data": [ 
      { 
      "id": 1, 
      "slug": "1", 
      "name": "1", 
      "description": "1", 
      "forum_id": 1, 
      "created_at": null, 
      "updated_at": null, 
      "subscribed": true 
      }, 

我已經做這在我的topic型號:

/** 
    * @return mixed 
    */ 
    public function subscriptions() 
    { 
     return Topic::subscribedBy(Auth::user())->get(); 
    } 

,它的工作。但是,我如何將每個主題發送給我。

+0

你應該看看'$ appends'財產 – Neat

+0

你是什麼意思與? – Jamie

回答

1

您可以通過創建一個訪問器來添加一個屬性(它不存在於數據庫中)。

public function getSubscriptionsAttribute() 
{ 
    return Topic::subscribedBy(Auth::user())->get(); 
} 

然後將其添加到$append屬性。

protected $appends = ['subscriptions']; 

如果您正在使用的$visible白名單,你可能將它添加到該屬性了。

Source(所有在底部的方式。)

+0

謝謝!很棒! – Jamie

+0

但這是好方法嗎?因爲它現在有很多查詢嗎? – Jamie

+0

那麼,你正在使用'paginate(5)',所以我不認爲你會遇到性能問題,它很有可能你可以優化它,但這到最後你:) – Neat