Laravel get class name of related model(Laravel 获取相关模型的类名)
问题描述
在我的 Laravel 应用程序中,我有一个 Faq
模型.一个 Faq
模型可以包含多个 Product
模型,所以 Faq
类包含以下函数:
In my Laravel application I have an Faq
model. An Faq
model can contain many Product
models, so the Faq
class contains the following function:
class Faq extends Eloquent{
public function products(){
return $this->belongsToMany('Product');
}
}
在控制器中,我希望能够检索定义关系的类名.例如,如果我有一个 Faq
对象,如下所示:
In a controller, I would like to be able to retrieve the class name that defines the relationship. For example, if I have an Faq
object, like this:
$faq = new Faq();
如何确定关系的类名,在本例中为 Product
.目前我可以这样做:
How can I determine the class name of the relationship, which in this case would be Product
. Currently I am able to do it like this:
$className = get_class($faq->products()->get()->first());
但是,我想知道是否有一种方法可以在无需实际运行查询的情况下完成同样的事情.
However, I'm wondering if there is a way to accomplish this same thing without having to actually run a query.
推荐答案
是的,有一种不用查询就可以得到相关模型的方法:
Yes, there is a way to get related model without query:
$className = get_class($faq->products()->getRelated());
它适用于所有关系.
这将返回带有命名空间的全名.如果您只想使用基本名称:
This will return full name with namespace. In case you want just base name use:
// laravel helper:
$baseClass = class_basename($className);
// generic solution
$reflection = new ReflectionClass($className);
$reflection->getShortName();
这篇关于Laravel 获取相关模型的类名的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Laravel 获取相关模型的类名
基础教程推荐
- HTTP 与 FTP 上传 2021-01-01
- 在 CakePHP 2.0 中使用 Html Helper 时未定义的变量 2021-01-01
- 使用 PDO 转义列名 2021-01-01
- 如何在 XAMPP 上启用 mysqli? 2021-01-01
- Doctrine 2 - 在多对多关系中记录更改 2022-01-01
- phpmyadmin 错误“#1062 - 密钥 1 的重复条目‘1’" 2022-01-01
- 找不到类“AppHttpControllersDB",我也无法使用新模型 2022-01-01
- PHP 守护进程/worker 环境 2022-01-01
- 在 yii2 中迁移时出现异常“找不到驱动程序" 2022-01-01
- 如何在 Symfony 和 Doctrine 中实现多对多和一对多? 2022-01-01