동적 인 콘텐츠 모델에 대한 관계가 있습니다. 내 게시물 유형으로 콘텐츠 모델을 사용하고 있으며 데이터베이스의 각 모델은 나중에 콘텐츠 유형의 실제 콘텐츠 인 모델로 리디렉션되는 모델 값을가집니다.이 모델 값은 나중에 작성자 패키지를 사용하여 설치할 수 있습니다.Laravel : 모델의 동적 관계
public function contents() {
return $this->hasMany($this->model);
}
내가보기에이 관계를 사용할 때 작동
$type->contents
하지만 난 내 컨트롤러에서이 관계를 eagerload 할 때
$types = Content::with('contents')->get();
나는 아직이다
FatalThrowableError in Model.php line 844: Class name must be a valid object or a string
이 작동하지 않는 이유를 파악하거나 내가 같은 일을 달성 할 수있는 방법을 대안으로 생각하는 오류를 얻을. 이것이 명확하지 않은 경우 자세한 내용을 제공 할 수 있습니다. 미리 감사드립니다!
업데이트 (일시적인/영구적 인 해결책을 찾았습니다.) 관계를 제거하고 이것을 바꿨습니다.
public function getContentsAttribute() {
$items = $this->contents_type::with('user')->get();
return $items;
}
당신이 FQN, 즉를 : 공공 기능의 내용()를 사용하여 시도 했 { 반환 $ this-> hasMany의 ('앱 \ 모델 \ 컨텐츠'); } – Trick
예 한 가지 유형의 콘텐츠 만있는 경우 작동합니다. 현재 내 콘텐츠 유형은 페이지 및 게시물입니다. 각각 Socms \ Content \ Page 및 Socms \ Content \ Post와 같은 모델 값으로 내용 테이블에 나타납니다. -> http://i.imgur.com/ByE2pT5.png –
이'return $ this-> hasMany (self :: $ modelClass);'매개 변수를 정적으로 만드십시오. '$ modelClass'를 설정하는 것을 잊지 마십시오! –