2017-11-02 3 views
0

모델 "사용자"가 있고 각 사용자는 "게시물"을 가지고 있습니다. 이제 게시물의 다른 유형 등 "TextPost", "VideoPost"처럼, 거기에Laravel : 하나의 관계, 여러 모델

나는이 같은 사용자의 모든 게시물을 얻으려면 :

$user->posts()->get()

이의 배열을 반환한다 올바른 클래스를 가진 객체들, 예. 이 같은 배열 :

[App\VideoPost{}, App\TextPost{}]

나는이 문서에 설명 된대로 다형성 관계를 사용하려했지만 작동하지 않습니다. 어떤 아이디어?

+1

'posts' 테이블의 관계와 내용을 보여 주어야합니다. –

+0

일부 코드는 좋은 것 같습니다. –

+0

https://laravel.com/docs/5.5/eloquent-relationships – Bomberis123

답변

0

특정 사용 사례에 대한 Laravel에는 실제로 관계 유형이 없습니다. 이 경우 가장 쉽게 할 수있는 것은 각 게시 유형에 대해 별도의 hasMany 관계를 만든 다음 모든 결과의 조합을 반환하는 함수를 작성하는 것입니다.

그래서 당신은 당신의 사용자 클래스에서이 같은 끝낼 것 :

public function videoPosts() 
{ 
    return $this->hasMany(App\VideoPost::class); 
} 

public function textPosts() 
{ 
    return $this->hasMany(App\TextPost::class); 
} 

public function getPosts() 
{ 
    return $this->textPosts->concat($this->videoPosts); 
} 

그런 다음 당신이 추가 할 수있는 모든 다른 포스트 유형 CONCAT 호출 체인 유지할 수 있습니다.