2017-02-25 90 views
0

我可能錯過了一些非常明顯的事情,但到目前爲止還沒有運氣。我有兩個相關的模型,消息和用戶。我試圖在檢索所有消息時只附加創建消息的用戶的'用戶名'。但是,我正在獲得完全序列化的相關用戶模型。我知道我可以隱藏在我的用戶模型中,但希望避免這種情況。Laravel 5.4訪問器與關係返回相關模型

在我的郵件模式,我創建了一個關係

public function createdBy() 
{ 
    return $this->belongsTo('App\User', 'created_by'); 
} 

然後我添加

protected $appends = ['username']; 

隨着自定義屬性

public function getUsernameAttribute($value) 
{ 
    $username = null; 
    if ($this->createdBy){ 
     $username = $this->createdBy->username; 
    } 
    return $username; 
} 

當我通過另一種關係獲得消息,如

return $channel->messages()->orderBy('id','desc')->get(); 

我結束了以下響應:

[{ 「ID」:97, 「to_id」: 「12345」, 「消息」: 「這是消息內容」, 「created_at」 :「2017-02-25 08:58:22」,「created_by」:{「id」:1,「email」:「刪除」,「名稱」:「刪除」,「用戶名」:「myusername」 created_at「:」2016-09-26 16:00:00「,」created_by「:null,」updated_at「:」2017-02-20 00:33:06「,」updated_by「:null},」updated_at「: 「2017-02-25 08:58:22」,「updated_by」:null,「deleted_at」:null,「username」:「myusername」},...

我做錯了什麼,或有沒有更好的方法來完成我想要的東西做什麼?

回答

0

我沒有意識到我能夠隱藏原始模型中的關係。我最終隱藏了Messages模型中的createdBy關係。

protected $hidden = [ 
    'createdBy' 
];