在Statamic 3中启用数据库用户

在处理最近的Statamic 3项目时,我需要切换到数据库雄辩的驱动程序来存储Statamic用户。在数据库中存储用户知识库文章对于完成配置更改和创建基本数据库表非常有用。但是,在进行了一些测试之后,我注意到该项目正在触发以下错误:

  • SQLSTATE[42S02]: Base table or view not found: 1146 Table 'database.password_activations' doesn't exist at

  • SQLSTATE[42S02]: Base table or view not found: 1146 Table 'database.password_resets' doesn't exist at

将Statamic 3用户迁移到数据库后,如果您也收到这些错误,则可以按照其余步骤进行操作,以使其恢复正常运行。

创建密码激活表

在您的Statamic 3项目的根目录中,运行以下Artisan命令:

php artisan make:migration create_password_activations_table

完成此操作后,_create_password_activations_table.php在您的项目database/migrations/文件夹中找到一个以结尾的新文件,并将内容设置为:

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreatePasswordActivationsTable extends Migration
{

    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('password_activations', function (Blueprint $table) {
            $table->string('email')->index();
            $table->string('token')->index();
            $table->timestamp('created_at');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('password_activations');
    }

}

创建密码重置表

我们将执行与password_activations表相似的步骤来创建password_resets表。在您的Statamic 3项目的根目录中,运行以下Artisan命令:

php artisan make:migration create_password_resets_table

完成此操作后,_create_password_resets_table.php在您的项目database/migrations/文件夹中找到一个以结尾的新文件,并将内容设置为:

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreatePasswordResetsTable extends Migration
{

    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('password_resets', function (Blueprint $table) {
            $table->string('email')->index();
            $table->string('token')->index();
            $table->timestamp('created_at');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('password_resets');
    }
}

运行迁移

完成前两个步骤后,请运行以下Artisan命令来生成新的数据库表:

php artisan migrate

结论

在本文中,我们研究了使用数据库存储Statamic 3用户时常见问题的解决方案。解决方案是仅创建Statamic在发送新的帐户激活电子邮件或密码重置电子邮件时要查找的两个必需表。

如果本文为您节省了一些时间,请考虑与您的朋友或同事分享!