2017-02-25 89 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' 
];