gpt4 book ai didi

php - 我怎样才能在 Laravel 获得关系类型

转载 作者:行者123 更新时间:2023-12-02 04:01:18 25 4
gpt4 key购买 nike

我有这样的问题,我想在具有 70 个模型的自定义项目中编写自己的表单构建器,但我需要在 Eloquent 情况下学习关系类型,还需要学习 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_class 替换 get_class。

Some benchmarks如果您担心反射类:

关于php - 我怎样才能在 Laravel 获得关系类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41846076/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com