2017-02-25 6 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(); 

I는 다음과 같은 반응으로 끝낼 :

[{ "ID가"97 "to_id": "12345", "메시지", "created_at" "이 메시지 내용 인" : "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 ": "017-02-25 08:58:22", "updated_by": null, "deleted_at": null, "username": "myusername"}, ...

내가 뭘 잘못하고 있는거야? 노력하고있는 것을 성취 할 수있는 더 좋은 방법이 있습니까? 그래?

답변

0

원래 모델에서 관계를 숨길 수 있다는 것을 알지 못했습니다. 나는 Messages 모델에서 createdBy 관계를 감추었다.

protected $hidden = [ 
    'createdBy' 
];