我前面有一长串模特名单。其中有些函数需要在批处理中运行。因为这个控制台很好。
我可以通过复制代码来包括模型,但是这不是一种很好的方法。
我正在寻找一种从控制台命令的前端子模块导入模型的方法,这样我就可以在一个地方进行更改。
澄清,的标准方式包括
use app\models\Mymodelname;
在控制台\模型中,将导致以下错误
‘'Class’app\model\Mymodelname‘not’
发布于 2018-02-18 23:22:00
use app\models\Mymodelname;以前没有使用过这个包含语句。我更喜欢按原样使用前端/后端。如果我不得不做一个疯狂的猜测,这会在控制台内寻找模型。@app是当前应用程序的别名。
通常,我会保留一个以上的应用程序所使用的任何东西。正如您所指出的,维护相同代码的两个副本并不是一个好做法。
如果不使用公共选项,请直接使用frontend\models\Mymodelname。
发布于 2018-02-18 05:51:44
我不知道您是否有两个独立的应用程序,或者可以从中受益,因为您已经在使用子模块,但是根据您希望使用一些控制台命令来分离关注点的愿望,这可能是有利的。
如果您使用composer来管理您的依赖项,那么您可以在git中创建一个单独的存储库,并在包含这些常见模型的项目中添加一个新的依赖项。
然后,在两个项目中包括您的依赖项。这在开发过程中带来了一些麻烦,因为两个应用程序都有这种依赖性,有时也会令人沮丧;我已经以这种方式在多个区间laravel项目之间共享了共同的功能,并取得了很大的成功。
目前,您似乎正在使用子模块,因此这可能需要重组,这可能是困难的,也可能是不可能的。
如果要保留子模块,另一种选择是将公共模型保持在更高的级别(而不是在子模块内),这样您就可以将模型导入两个子模块并在两个地方使用它们。我与yii1.1.16共享了模块间的通用模型,几年来使用了这种策略,并取得了很大的成功。
这两种选择都有各自的优势,所以要仔细权衡你想要的结果。请随时要求澄清。
发布于 2018-02-19 13:15:40
@app是当前正在运行的应用程序的别名。它可以是frontend、backend或console。如果希望跨应用程序访问模型,请将其添加到commen\models中。或者将app\models更改为frontend\models。这样,您就可以在控制台上访问frontend模型。更好的方法是把它转移到common\models。
https://stackoverflow.com/questions/48848697
复制相似问题