【发布时间】:2014-03-28 15:13:00
【问题描述】:
有没有办法在 Laravel 4 中获取所有现有模型?文档对此只字未提,谷歌搜索该问题并没有任何相关结果。
我正在开发我当前项目中的一项功能,该功能需要能够创建一份报告,说明存在哪些资产或哪些客户在公司购买了哪些资产。为此,我正在创建一个模块,允许用户指定哪些信息出现在哪个工作表上(导出到 Excel)。
假设我有以下模型(它们都扩展了 Eloquent):
- 资产
- 客户
- 国家
- 钥匙
- 用户
我只希望资产和客户模型在报告中可用。我的想法是给它们一个常数并检查该常数。
我唯一遇到的问题是一种获取 Laravel 应用程序中定义的所有模型的方法。
我知道我可以遍历 app/models 目录或在某处创建一个数组,但我正在寻找一种更好的方法来执行此操作。有谁碰巧知道如何实现这一目标?
【问题讨论】:
-
查看this answer,它显示了一种获取所有扩展父类的类的方法(在您的情况下是
Eloquent)。 -
我会创建一个存储库或服务提供者类来处理您描述的功能。然后使用 Laravel 的内置 IoC 类简单地获取类。
-
@André
get_declared_classes()没有列出之前没有调用过的任何模型。