yii2灯具无法正常工作

时间:2014-11-09 09:49:43

标签: testing yii2 fixture

我在yii2中遇到灯具问题,我刚刚根据this document创建了所有必需的文件,但它无效。 让我解释一下,我有一个名为Authyii的模块,在这个模块中我有一个名为User的模型。 这是我的目录结构: enter image description here

我的夹具文件是这样的:

namespace app\modules\Authyii\tests\fixtures;


use app\modules\Authyii\models;
use yii\test\ActiveFixture;
use yii\test\Fixture;

class UserFixture extends ActiveFixture
{
    public $modelClass = 'app\modules\Aythyii\models\User';
    public $tableName = 'authyii_user';

}

这是我的命令行: enter image description here

但在我输入'是'和命令行说: enter image description here

但是当我检查我的数据库时,authyii_user表中没有新记录。 我错过了什么?

2 个答案:

答案 0 :(得分:1)

文件User.php id数据目录必须具有表名authyii_user.php。在文件ActiveFixture.php中的框架源代码中,代码为:

$dataFile = dirname($class->getFileName()) . '/data/'
    . $this->getTableSchema()->fullName . '.php';

最好的问候。

答案 1 :(得分:0)

\ vendor \ yiisoft \ yii2 \ console \ controllers \ FixtureController.php中有方法getFixturesConfig()

private function getFixturesConfig($fixtures)
{
    $config = [];

    foreach ($fixtures as $fixture) {

        $isNamespaced = (strpos($fixture, '\\') !== false);
        $fullClassName = $isNamespaced ? $fixture . 'Fixture' : $this->namespace . '\\' . $fixture . 'Fixture';

        if (class_exists($fullClassName)) { // <<< I think you lose your UserFixture here
            $config[] = $fullClassName;
        }
    }

    return $config;
}

您应该检查Yii期望它是什么$fullClassName(例如记录或回显它)并相应地调整UserFixture的命名空间。