2017-01-25 11 views
0

私は自分のフォームビルダーを70モデルのカスタムプロジェクトに書きたいと思っていますが、私は雄弁に関係タイプを学ぶ必要があります。例えば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

申し訳ございませんがご質問がありませんでしたか? –

関連する問題