Php 我如何在Laravel获得关系类型

Php 我如何在Laravel获得关系类型,php,laravel,eloquent,Php,Laravel,Eloquent,我有这样一个问题,我想写我自己的表单生成器在定制项目与70个模型,但我需要学习的关系类型雄辩,也有2或3个层次以上 例如: class Category extends BaseModel { public function details() { return $this->hasMany(CategoryDetail::class); } } class CategoryDetail extends BaseModel { publi

我有这样一个问题,我想写我自己的表单生成器在定制项目与70个模型,但我需要学习的关系类型雄辩,也有2或3个层次以上

例如:

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');
真正的需要:数据来自构建的json

 learnMethodType(Category::class,'details.extras'); 
回报应该是:

['model'=> CategoryDetail::class,'type'=>'hasMany', ... other parameters];

['model'=> Extra::class,'type'=>'morphMany', 'name'=> 'model'];

这个实现怎么样

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_类替换get_类


如果您担心反射类:

您好,它起作用了,我需要有多个函数模型?对不起,您的问题还没有解决吗?