class CreateCommentsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('comments', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email');
$table->text('comment');
$table->boolean('approved');
$table->integer('post_id')->unsigned();
$table->timestamps();
});
Schema::table('comments', function (Blueprint $table) {
$table->foreign('post_id')->references('id')->on('posts');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropForeign(['post_id']);
Schema::dropIfExists('comments');
}
}
这是我的迁移类的样子,我一直在尝试从数据库中删除该表,但它会引发错误。
错误
调用未定义的方法Illuminate \ Database \ Schema \ MySqlBuilder :: dropForeign()
我已经阅读了文档,但它似乎没什么帮助。
任何人都可以指出我的错误,解决方案是什么?
就这样你知道,我是laravel的新手。对我很轻松。谢谢!。
答案 0 :(得分:3)
dropForeign
对象在Schema::table
下调用 Blueprint
,
Schema::table('comments', function (Blueprint $table) {
$table->dropForeign('comments_post_id_foreign');
});
这遵循<table_name>_<foreign_table_name>_<column_name>_foreign
的命名惯例。
OR
Schema::table('comments', function (Blueprint $table) {
$table->dropForeign(['your_key_name']);
});
答案 1 :(得分:1)
你使用了错误的语法。它应该是:
Schema::table('comments', function (Blueprint $table) {
$table->dropForeign('comments_post_id_foreign');
});
https://laravel.com/docs/5.3/migrations#foreign-key-constraints