Php Can';t在播种前截断表
我想在种子之前截断我的用户表。我喜欢这样做: DatabaseSeeder.php:Php Can';t在播种前截断表,php,laravel,laravel-5,eloquent,lumen,Php,Laravel,Laravel 5,Eloquent,Lumen,我想在种子之前截断我的用户表。我喜欢这样做: DatabaseSeeder.php: 您在其他一些表中引用了您的用户。您应该将->onDelete('cascade')添加到引用用户id的“不喜欢”表列中,或者首先手动删除所有不喜欢的内容 $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); 有外键问题,表正试图提醒您。 如果仍然要截断表 Schema::d
您在其他一些表中引用了您的用户。您应该将->onDelete('cascade')
添加到引用用户id的“不喜欢”表列中,或者首先手动删除所有不喜欢的内容
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
有外键问题,表正试图提醒您。
如果仍然要截断表
Schema::disableForeignKeyConstraints();
// ... Some Truncate Query
Schema::enableForeignKeyConstraints();
不要忘记使用:
使用light\Support\Facades\Schema;
在种子设定之前截断数据的最简单方法
只需在run方法的开头添加这一行
DB::table('users')->truncate();
run方法的完整语法
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
class AdminSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
DB::table('users')->truncate();
DB::table('users')->insert([
'name' => 'Admin',
'email' => 'admin@example.com',
'is_admin' => 1,
'password' => Hash::make('password'),
]);
}
}
我在所有这样的表中使用了cascade
:$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade')->onUpdate('cascade')代码>
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
class AdminSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
DB::table('users')->truncate();
DB::table('users')->insert([
'name' => 'Admin',
'email' => 'admin@example.com',
'is_admin' => 1,
'password' => Hash::make('password'),
]);
}
}