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

时间:2014-10-06 09:15:54

标签: php rest laravel eloquent

我用Laravel编写了一个REST API。最重要的是,我想创建一个管理面板,其中包含大量统计信息和“强大”审核工具,这些工具应在服务器端呈现。 虽然REST API使用OAuth2.0并且仅返回JSON + HAL(HATEOAS),但管理面板将使用HTTP Basic身份验证以及基于会话的身份验证的正常凭据登录。

我知道可以很容易地使用第二个auth-filter和Route组来在一个应用程序中完成所有这些操作。我知道只有在需要时才会加载库。但我想创建一个完全独立的第二个应用程序。

为什么呢? 保持REST API轻量级:没有不必要的库,没有第二个auth层,没有其他路由,规则和过滤器等.REST API是Restful,我不想添加额外的混乱。虽然它可能会使测试变得更复杂。

以下是它的样子:

后端

  • 休息(Laravel应用1)

- app

---模特

---- RestapiModel.php

  • admin(Laravel应用程序2)

- app

---模特

---- AdminModel.php

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

class AdminModel extends RestapiModel {

     protected $connection = 'application_1_database';

     // Statistical methods
     // Database manipulation
     // etc.
}

我现在有两个问题:

  1. 我怎样才能做到这一点? “AdminModel扩展RestapiModel”将无法正常工作。我是否必须使用名称空间,特征或仅将模型包含在文件的顶部?你会如何解决这个问题?

  2. 您如何看待分离API和管理的完整方法?

  3. 提前致谢

    菲尔

1 个答案:

答案 0 :(得分:0)

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

require base_path().`/../rest/models/RestapiModel.php`;

class AdminModel extends RestapiModel {

    protected $connection = 'application_1_database';

    // Statistical methods
    // Database manipulation
    // etc.
}

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

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

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