0

認証には Cartalyst Sentry を使用しています。コマンド ラインからデータベースをシードしようとすると、次のエラーが発生します。

[Cartalyst\Sentry\Users\LoginRequiredException]  
A login is required for a user, none given.

これは私のDatabaseSeeder.phpファイルです:

<?php

class DatabaseSeeder extends Seeder {

    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        Eloquent::unguard();

        $this->call('PriceChangeOccuredTableSeeder');
    }

}

そして、これは私のPriceChangeOccuredTableSeeder.phpファイルです:

<?php

// Composer: "fzaninotto/faker": "v1.3.0"
use Faker\Factory as Faker;

class PriceChangeOccuredTableSeeder extends Seeder {

    public function run() {
        DB::table('price_change_occured')->delete();

        User::create(array('product_id' => 1, 'owner_id' => 2, 'change_occured' => 1));
    }

}

そして、これは私のPriceChangeOccuredモデルです

<?php

class PriceChangeOccured extends \Eloquent {
    public $table = 'price_change_occured';
}
4

2 に答える 2

1

ログインを「EMAIL」から「USERNAME」に変更し、すべて問題がなければ、これらも変更する必要があります。

  1. シードにユーザー名も追加します。

    class UserSeeder extends Seeder
    {
        protected $admin_email = "admin@admin.com";
        protected $admin_password = "password";
        protected $admin_username = "naghipour.me";
    }
    
  2. SentryUserRepository.phpを見つけてcreate 関数を見つけ、これに変更します。

    $data = array(
              "email"     => $input["email"],
              "password"  => $input["password"],
              "username" => $input["username"]
    );
    

注意: 移行時に提出されたユーザー名を追加する必要があります:

$table->string('username', 100)->unique();

また、メールがある場合はすべて、ユーザー名も追加する必要があります。

于 2016-02-07T20:33:40.230 に答える