Я пытаюсь установить отношение n: n между пользователем и ролью.
Миграции в порядке, но когда я пытаюсь заполнить базу данных в RoleUserTableSeeder, консоль выдает мне эту ошибку:
Неустранимая ошибка PHP: вызов неопределенного метода CreateForeignKeys :: setContainer () в /var/www/laravel/vendor/laravel/framework/src/Illuminate/Database/Seeder.php в строке 57
{«error»: {«type»: «Symfony \ Component \ Debug \ Exception \ FatalErrorException», «message»: «Вызов неопределенного метода CreateForeignKeys :: setContainer ()», «file»: «/ var / www / laravel /vendor/laravel/framework/src/Illuminate/Database/Seeder.php»,»line»:57}}
Это мои миграции:
2014_10_27_153245_create_users_table.php
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateUsersTable extends Migration {
public function up()
{
Schema::create('users', function($t) {
$t->string('name', 50);
$t->string('surname', 50);
$t->string('email', 100);
$t->string('username', 20);
$t->string('password', 60);
$t->string('remember_token', 100);
$t->timestamps();
$t->primary('username');
});
}
public function down()
{
Schema::drop('users');
}
}
?>
2014_10_29_162948_create_roles_table.php
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateRolesTable extends Migration {
public function up()
{
Schema::create('roles', function($t) {
$t->increments('id');
$t->string('role',50)->unique();
$t->timestamps();
});
}
public function down()
{
Schema::drop('roles');
}
}
?>
2014_10_29_163350_create_role_user_table.php
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateRoleUserTable extends Migration {
public function up()
{
Schema::create('role_user', function($t) {
$t->increments('id');
$t->integer('role_id')->unsigned();
$t->string('user_username');
});
}
public function down()
{
Schema::drop('role_user');
}
}
?>
2014_10_29_163723_create_foreign_keys.php
<?phpuse Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateForeignKeys extends Migration {
public function up()
{
Schema::table('role_user', function($t) {
$t->foreign('role_id')->references('id')->on('roles')
->onUpdate('cascade');
});
Schema::table('role_user', function($t) {
$t->foreign('user_username')->references('username')->on('users')
->onUpdate('cascade');
});
}
public function down()
{
Schema::table('role_user', function($t) {
$t->dropForeign('role_user_role_id_foreign');
});
Schema::table('role_user', function($t) {
$t->dropForeign('role_user_user_username_foreign');
});
}
}
?>
… а это моя сеялка
UserTableSeeder.php
<?php
## Seeder for the user table to create the admin user
class UserTableSeeder extends Seeder
{
public function run()
{
DB::table('users')->delete();
DB::table('users')->insert(array(
'name' => 'xxxx',
'surname' => 'xxxx',
'email' => '[email protected]',
'password' => Hash::make('admin'),
'username' => 'admin',
));
}
}
?>
RoleTableSeeder.php
<?php
## Seeder for the role table to create the admin user
class RoleTableSeeder extends Seeder
{
public function run()
{
DB::table('roles')->delete();
DB::table('roles')->insert(array(
'role' => 'admin'
));
}
}
?>
RoleUserTableSeeder.php
<?php
## Seeder for the role_user table to create the admin user
class RoleUserTableSeeder extends Seeder
{
public function run()
{
DB::table('role_user')->delete();
DB::table('role_user')->insert(array(
'user_username' => 'admin',
'role_id' => Role::getId('admin')
));
}
}
?>
и это моя функция getId в ролевой модели:
Role.php
...
## Return the id of a role
public static function getId($mansion) {
return Role::where('role','=',$mansion)->pluck('id');
}
...
Кто-нибудь может помочь мне исправить эту ошибку?
Спасибо!
Задача ещё не решена.
Других решений пока нет …