【问题标题】:Laravel get class name of related modelLaravel 获取相关模型的类名
【发布时间】:2014-12-05 05:27:50
【问题描述】:

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

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

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

$faq = new Faq();

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

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

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

【问题讨论】:

    标签: php laravel eloquent


    【解决方案1】:

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

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

    它适用于所有关系。

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

    // laravel helper:
    $baseClass = class_basename($className);
    
    // generic solution
    $reflection = new ReflectionClass($className);
    $reflection->getShortName();
    

    【讨论】:

    • getRelated 是一个很棒的发现!以前我使用 $className = get_class($faq->products()->getQuery()->getModel());
    猜你喜欢
    • 2018-10-12
    • 1970-01-01
    • 2016-05-26
    • 2016-08-30
    • 2014-02-12
    • 2020-03-22
    • 2019-10-10
    • 2014-11-02
    • 1970-01-01
    相关资源
    最近更新 更多