2013-09-22 2 views
1

사용자 정의 네임 스페이스에 Eloquent 모델이 있습니다. 예를 들어 내 사용자 모델이 Admin\User 인 것을 의미합니다. 각 사용자는 회원 또는 관리자와 연결되어 있습니다. 이러한 최신 모델은 사용자 모델과 동일한 네임 스페이스 (Admin\MemberAdmin\Admin)에 있습니다.Laravel의 다형성 관계를 사용자 정의 네임 스페이스의 모델로 정의

namespace Admin; 
use Illuminate\Database\Eloquent\Model as Eloquent; 

class User extends Eloquent 
{ 
    public function model() 
    { 
     return $this->morphTo(); 
    } 
} 

class Admin extends Eloquent 
{ 
    public function user() 
    { 
     return $this->morphOne('Admin\User', 'model'); 
    } 
} 

class Member extends Eloquent 
{ 
    public function user() 
    { 
     return $this->morphOne('Admin\User', 'model'); 
    } 
} 

내 문제는 다음과 같이

나는 내가 할 때, 관계를 정의했습니다 :

$member = Member::find($id); 

$member->userNULL입니다.

내가 정의해야 할 것은 무엇입니까? 제가 누락 된 것이 있습니까?

+0

혹시이 문제를 해결하셨습니까? 나는 동일한 문제 (morphMany() btw 사용)를 가지고 있고 아주 단순하기로되어있는 동안 나는 갇혀있다 ... –

+0

네임 스페이스 선언을 제거 할 때 작동합니까? –

+0

사실, $ member-> user는 null을 반환하면 구성원과 관련된 사용자가 발견되지 않았습니다. 클래스를 찾을 수 없으면 예외가 발생합니다. – ehp

답변

1

향후 독자를 위해 ...

네임 스페이스 모델을 사용하여이 문제를 해결했습니다. 다형성 관계를 사용하면 Laravel이 XXX-able_id 및 XXX-able_type을 테이블에 저장합니다. XXX-able_type은 일반적으로 클래스 이름이 아닌 모델의 정규화 된 이름입니다. 따라서이 경우 해당 열의 값이 실제로 Admin\User이고 User이 아닌지 확인해야합니다.

경우에 따라 이주하면 모델이 단순히 클래스 이름이 아닌 완전한 이름으로 삽입되기 만하면됩니다.

희망이 도움이됩니다.

관련 문제