Yii2 控制台:app\models Class 未找到但 common\models 找到

Yii2 Console: app\models Class not found but common\models found

我有一个 Yii2 网络应用程序,其中包含 50 多个模型 class 文件,这些文件位于 /models 目录中。

现在我想 运行 来自 /console/controllers/MyController.php 的一些控制台脚本使用这些模型但是得到 class app\models\ModelName not found 错误,尽管顶部有 use app\models\ModelName

如果我将模型文件复制到 /console/models/ModelName.php/common/models/ModelName.php(并在使用中进行更改),它就可以正常工作。是否有任何选项可以使用 /model 中的模型,或者我应该重构应用程序以便 Web 和控制台都使用来自 /common/models

的模型文件

如果您使用的是 yii2-advanced 构建,请记住 @app 每次都会根据您使用的应用程序部分设置别名。

如果您从 frontend 拨打电话,@app 将等于 /path/to/project-root/frontend。

如果来自 backend - /path/to/project-root/backend.

console - /path/to/project-root/console

您可以在 /common/config/bootstrap.php 中添加自定义别名,使您的 类 可从 root 访问。

例如尝试将 Yii::setAlias('@root', dirname(dirname(__DIR__))); 添加到 /common/config/bootstrap.php 并将命名空间设置为 root/models

注意:如果您尝试将@app添加到bootstrap.php,它会被框架自动重新分配。

注 2: 你可以查看 yii2 autoloader 是如何工作的 BaseYii.php