我可能错过了一些非常明显的东西,但到目前为止还没有运气。我有两个相关的模型,消息和用户。我试图在检索所有消息时仅附加创建消息的用户的“用户名”。但是,我得到了一个完全序列化的相关用户模型。我知道我可以 $hidden 在我的用户模型中,但想避免这种情况。
在我的消息模型中,我创建了一个关系
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","message":"这是消息内容","created_at":"2017-02-25 08:58:22","created_by":{ "id":1,"email":"REDACTED","name":"REDACTED","username":"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"}, ...
我做错了什么,还是有更好的方法来完成我想做的事情?