Таблица не найдена ошибка при заполнении базы данных в Laravel

Я использую пакет way / generators для генерации сводной таблицы в Laravel 4.2. Я получаю приведенную ниже ошибку, которая указывает Table 'pricom.roleuser' doesn't exist, но имя таблицы в моей БД 'pricom.role_user', Все остальные миграции и семена работают нормально, за исключением таблицы role_user.

[PDOException]
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'pricom.roleuser' doesn't exist

Мой мастер DatabaseSeeder выглядит следующим образом, как предложено Джеффом Уэйем

<?php

/**
* Class DatabaseSeeder
*/
class DatabaseSeeder extends Seeder
{

/**
* Run the database seeds.
*
* @return void
*/
public function run()
{$tables = [
'Users',
'Designations',
'Departments',
'News',
'Organizations',
'Roles',
'RoleUser'
];

Eloquent::unguard();

DB::statement('SET FOREIGN_KEY_CHECKS=0;');

foreach ($tables as $table) {
DB::table($table)->truncate();
}

foreach ($tables as $table) {
$this->call($table . 'TableSeeder');
}

DB::statement('SET FOREIGN_KEY_CHECKS=1;');
}
}

Модель RoleUser

<?php

class RoleUser extends \Eloquent {
protected $fillable = [];

protected $table='role_user';

}

RoleUser Seeder

<?php

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

class RoleUsersTableSeeder extends Seeder {

public function run()
{
$faker = Faker::create();

$roleUsers = [
[
'role_id'=>1,
'user_id'=>1
],
[
'role_id'=>2,
'user_id'=>2
],
[
'role_id'=>3,
'user_id'=>3
]
];foreach ($roleUsers as $roleUser) {
RoleUser::create($roleUser);
}

foreach(range(1, 300) as $index)
{
RoleUser::create([
'role_id'=>4,
'user_id'=>$index+3
]);
}
}
}

Пожалуйста, помогите мне исправить это.

0

Решение

Похоже, вы пытаетесь усечь таблицу под названием RoleUser который не существует Вам нужно получить имя таблицы из класса. Попробуйте изменить этот бит в вашей базе данных:

foreach ($tables as $table) {
DB::table(with(new $table)->getTable())->truncate();
}
1

Другие решения

Я исправил это, сделав несколько твиков в моем DatabaseSeeder.php. Спасибо @RobbieP за ваше предложение.

<?php

/**
* Class DatabaseSeeder
*/
class DatabaseSeeder extends Seeder
{

/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$tables = [
'User',
'Designation',
'Department',
'News',
'Organization',
'Role',
'RoleUser'
];

Eloquent::unguard();

DB::statement('SET FOREIGN_KEY_CHECKS=0;');

foreach ($tables as $table) {
DB::table(with(new $table)->getTable())->truncate();
}

foreach ($tables as $table) {
$this->call(str_plural($table) . 'TableSeeder');
}

DB::statement('SET FOREIGN_KEY_CHECKS=1;');
}
}
0

По вопросам рекламы [email protected]