2017-01-25 1 views
0

나는 70 가지 모델로 사용자 정의 프로젝트에서 직접 양식 빌더를 작성하고 싶지만 능동적으로 관계 유형을 배우고 2 ~ 3 가지 이상을 필요로하는 것과 같은 문제가 있습니다. 예를 들어어떻게 Laravel에서 관계 유형을 얻을 수 있습니까

:

class Category extends BaseModel 
{ 
    public function details() 
    { 
     return $this->hasMany(CategoryDetail::class); 
    } 
} 


class CategoryDetail extends BaseModel 
{ 
    public function extras() 
    { 
     return $this->morphMany(Extra::class,'model'); 
    } 
} 

나는 그런 뭔가가 필요 :

learnMethodType(Category::class,'details'); 

실제 필요 :

: 데이터

learnMethodType(Category::class,'details.extras'); 

반환 같아야 사례 JSON에서 온다

답변

2

이 구현은 어떻게됩니까?

function learnMethodType($classname,$method){ 
    $oReflectionClass = new ReflectionClass($classname); 
    $method = $oReflectionClass->getMethod($method) 
    $type = get_class($method->invoke($classname)) 
    return $type; 
} 

또는 단순히이

:

function learnMethodType($classname,$method){ 
    $obj = new $classname; 
    $type = get_class($obj->{$method}()) 
    return $type; 
} 

귀하의 경우를 들어 당신은 또한

function get_short_class($obj){ 
    return (new \ReflectionClass($obj))->getShortName(); 
} 

를 추가하고 위의 get_short_class와 get_class을 대체 할 수 있습니다. 경우에

Some benchmarks 당신은 반사 클래스에 대한 걱정 :

+0

안녕하세요 거기에 내가 기능에 hasMany의 모델이 필요했다? –

+0

죄송합니다. 질문이 없습니까? –

관련 문제