![](/img/trans.png)
[英]Getting the class(name) of a related model (Laravel 4, Eloquent) without retrieving an instance
[英]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.