我在前端有很多模型。其中一些具有需要批量运行的功能。对于这个控制台很好。
我可以通过复制代码来包含模型,但这不是一个好的方法。
我正在寻找一种方法从控制台命令中的前端子模块导入模型,这样我就可以在一个地方进行更改。
澄清, 包括
的标准方式 use app\models\Mymodelname;
导致以下错误
'类'app \ models \ Mymodelname'找不到'
答案 0 :(得分:2)
{
"plugins": [
"transform-object-rest-spread",
"syntax-jsx",
"transform-react-jsx",
"transform-react-display-name",
"transform-class-properties",
"transform-function-bind",
"transform-decorators-legacy"
],
"compact": false,
"env": {
"development": {
"plugins": [
"transform-react-jsx-self",
"transform-react-jsx-source",
[
"styled-components",
{
"displayName": true,
"minify": false
}
]
// https://stackoverflow.com/q/48857689/65387
//"react-hot-loader/babel"
],
"presets": [
[
"env",
{
"targets": {
"browsers": "last 2 chrome versions"
},
"modules": false
}
]
],
},
"webpack": {
"presets": [
[
"env",
{
"targets": {
"node": "current"
},
"modules": "commonjs"
}
]
]
}
}
}
以前没有使用过此包含声明。我更喜欢使用前端/后端。如果我不得不疯狂猜测,这会在控制台中寻找模型。 @app是当前应用程序的别名。
通常情况下,我会保留多于1个应用程序使用的任何内容。正如您所指出的,维护相同代码的两个副本并不是一个好习惯。
如果移动到common不是一个选项,请尝试直接使用use app\models\Mymodelname;
答案 1 :(得分:1)
我不知道你是否有两个独立的应用程序,或者可以从中受益,因为你已经在使用子模块了,但是根据你想用一些控制台命令来区分问题,这可能是有利的。
如果您使用composer来管理依赖项,那么您可以在git中创建一个单独的存储库,例如,在项目中添加一个包含这些常见模型的新依赖项。
然后,在两个项目中包含您的依赖项。这在开发过程中引入了一些麻烦,因为这两个应用程序共享这种依赖性并且有时令人沮丧;我以这种方式在多个间隔laravel项目之间共享了共同的功能,并取得了巨大的成功。
目前您似乎正在使用子模块,因此这可能需要重组,这可能很难或不可能。
如果要保留子模块,另一个选项是将常用模型保持在更高级别(不在子模块内),以便可以将模型导入两个子模块并在两个位置使用它们。几年来,我使用这种策略在yii 1.1.16模块之间共享了通用模型并取得了很大的成功。
两种选择都有其优点,因此请仔细权衡您期望的结果。随意要求澄清。
答案 2 :(得分:0)
@app
是当前正在运行的应用程序的别名。它可以是frontend
或backend
或console
。如果要跨应用程序访问模型,请将其添加到commen\models
。或者将app\models
更改为frontend\models
。这样,您就可以在控制台上访问frontend
个模型。更好的方法是将其移至common\models
。