Laravel:从第二个Laravel应用程序扩展模型


Laravel: Extend models from a second Laravel application

我用Laravel编写了一个REST API。最重要的是,我想创建一个管理面板,里面有很多统计数据和"强大"的审核工具,应该在服务器端呈现。虽然REST API使用OAuth2.0并且只返回JSON+HAL(HATEOAS),但是管理面板将使用HTTP基本身份验证加上基于会话的身份验证的正常凭据登录。

我知道使用第二个身份验证过滤器和路由组可以很容易地在一个应用程序中实现所有这些。我知道只有在需要的时候才会加载libs。但我想创建一个完全独立的第二个应用程序。

为什么?为了保持REST API的轻量级:没有不必要的库,没有第二个身份验证层,没有额外的路由、规则和过滤器等。REST API是Restful的,我不想添加额外的混乱。尽管这可能会使测试变得更加复杂。

以下是它应该是什么样子:

后端

  • 休息(Laravel应用程序1)

--应用

---型号

----RestapiModel.php

  • admin(Laravel应用程序2)

--应用

---型号

----AdminModel.php

问题是:在应用程序2中,我需要使用应用程序1的模型所以我想做像一样的s.th

class AdminModel extends RestapiModel {
     protected $connection = 'application_1_database';
     // Statistical methods
     // Database manipulation
     // etc.
}

我现在有两个问题:

  1. 我怎样才能做到这一点?"AdminModel扩展RestapiModel"不起作用。我必须使用名称空间、特征还是只在文件顶部包含Model?你将如何解决这个问题?

  2. 您认为将API和管理分开的完整方法是什么?

提前感谢

Phil

这并不漂亮,但您可以使用require导入文件

require base_path().`/../rest/models/RestapiModel.php`;
class AdminModel extends RestapiModel {
    protected $connection = 'application_1_database';
    // Statistical methods
    // Database manipulation
    // etc.
}

或者,您可以使用composer自动加载rest api的所有模型。管理应用程序中的composer.json可能如下所示:

// ...
"autoload": {
    "classmap": [
        "app/commands",
        "app/controllers",
        "app/models",
        "../../rest/app/models",
        "app/database/migrations",
        // ...
    ]
},
// ...

(更改自动加载部分后,确保运行composer dump-autoload