現在、アプリケーションのロールを作成しようとしていますが、残念ながら問題が発生しています。 php artisan merge --seedを実行するたびに、タイトルに書いたエラーが発生します。正直なところ、名前のような単純なものを台無しにしたような気がしますが、間違いを見つけることができません。助けていただければ幸いです。
User.phpモデル:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model implements Authenticatable
{
public function roles(){
return $this->belongsToMany('App\Role');
}
}
Role.phpモデル:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Role extends Model
{
public function users(){
return $this->belongsToMany('App\User');
}
}
ユーザーテーブル:
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('first_name');
$table->string('last_name');
$table->string('username');
$table->string('password');
$table->string('email');
$table->timestamps();
$table->rememberToken();
});
}
役割テーブル:
public function up()
{
Schema::create('roles', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('description')->nullable()->default(null);
$table->timestamps();
});
}
role_userテーブル
public function up()
{
Schema::create('role_user', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id');
$table->integer('role_id');
$table->timestamps();
});
}
RoleTableSeeder.php
<?php
use Illuminate\Database\Seeder;
use App\Role;
class RoleTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$role_user = new Role();
$role_user->name = 'User';
$role_user->description = "Normal User";
$role_user->save();
$role_admin = new Role();
$role_admin->name = 'Admin';
$role_admin->description = "Admin User";
$role_admin->save();
}
}
UserTableSeeder.php
public function run()
{
$role_admin = Role::where('name', 'Admin')->first();
$user = new User();
$user->first_name = 'test';
$user->last_name = 'test';
$user->username = 'Admin';
$user->password = bcrypt('test');
$user->email = '[email protected]';
$user->save();
$user->roles()->attach($role_admin);
}
DatabaseSeeder.php
public function run()
{
$this->call(RoleTableSeeder::class);
$this->call(UserTableSeeder::class);
}
}
コメントで述べたように:
実行:composer dump-autoload
。
Composer\Exception\NoSslException
例外がスローされた場合、composer config -g -- disable-tls true
の前にcomposer dump-autoload
を実行する必要がある場合があります。
上記と同じ問題が発生しましたcomposerコマンドではうまくいきませんでした。
on Laravel 5.5私は走った
php artisan cache:clear
そして、新しく作成したシーダークラスがすべて見つかりました
私はPH7.2。*とLaravel5.5。*で同じ問題に直面しました。
非常に簡単な解決策-名前空間を使用します。
php artisan db:seed --class=Modules\{moduleName}\Database\Seeders\{className}DatabaseSeeder
ここもまた:
$this->call('Modules\{moduleName}\Database\Seeders\{className}TableSeeder');