簡體   English   中英

Laravel獲取相關模型的類名

[英]Laravel get class name of related model

在我的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());

但是,我想知道是否有辦法在不必實際運行查詢的情況下完成同樣的事情。

是的,有一種方法可以獲得相關模型而無需查詢:

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

它適用於所有關系。

這將返回名稱空間的全名。 如果您只想使用基本名稱:

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

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

我想你不能這樣做。 我不知道你需要它,但你可以簡單地添加額外的方法,你把你所有的關系類名稱和你想要的返回的地方:

public function getRelationsClassName($relation) {
    $relations = [
        'products' => 'Product',
        'users' => 'User',
    ]  
    return isset($relations[$relation]) ? $relations[$relation] : null;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM