Laravel获取相关模型的类名

2022-08-30 09:13:55

在我的Laravel应用程序中,我有一个模型。一个模型可以包含许多模型,因此该类包含以下函数:FaqFaqProductFaq

class Faq extends Eloquent{ 
    public function products(){
        return $this->belongsToMany('Product');
    }
}

在控制器中,我希望能够检索定义关系的类名。例如,如果我有一个对象,如下所示:Faq

$faq = new Faq();

如何确定关系的类名,在本例中为 。目前,我可以像这样做到:Product

$className = get_class($faq->products()->get()->first());

但是,我想知道是否有一种方法可以在不实际运行查询的情况下完成同样的事情。


答案 1

是的,有一种方法可以在不查询的情况下获取相关模型:

$className = get_class($faq->products()->getRelated());

它将适用于所有关系。

这将返回带有命名空间的全名。如果您只想使用基本名称:

// laravel helper:
$baseClass = class_basename($className);

// generic solution
$reflection = new ReflectionClass($className);
$reflection->getShortName();

答案 2

推荐