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

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

在 Controller 中,我希望能够检索定义关系的类名称。例如,如果我有一个Faq对象,如下所示:
$faq = new Faq();

如何确定关系的类名,在这种情况下为Product。目前,我可以这样做:
$className = get_class($faq->products()->get()->first());

但是,我想知道是否有一种方法可以不必真正运行查询即可完成同样的事情。

最佳答案

是的,有一种无需查询即可获取相关模型的方法:

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

它将适用于所有关系。

这将返回带有 namespace 的全名。如果您只想使用基本名称,请使用:
// laravel helper:
$baseClass = class_basename($className);

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

关于php - Laravel获取相关模型的类名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26292718/

10-13 06:13