我正在使用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
我的主数据库查看器如Jeff Way所建议的那样如下所示
<?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播种机
<?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 :(得分:1)
看起来您正在尝试截断一个名为RoleUser
的表,该表不存在。您需要从类中获取表的名称。尝试在数据库播种器中更改此位:
foreach ($tables as $table) {
DB::table(with(new $table)->getTable())->truncate();
}
答案 1 :(得分:0)
我通过在DatabaseSeeder.php中制作一些tweek来解决这个问题。感谢@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;');
}
}