没有什么可以迁移laravel 4.2

时间:2016-07-11 12:10:04

标签: php laravel migrate

为什么不能,而且似乎没什么可迁移的?

迁移时创建表的作者和书籍可以,但是外键后不能

迁移添加外来:

public function up()
    {
        Schema::table('books', function(Blueprint $table) {
            $table->foreign('author_id')->references('id')->on('authors')
                ->onDelete('restrict')
                ->onUpdate('cascade');
        });
    }

使用它:

php artisan migrate 

和此:

php artisan migrate --path=app/database/migrations/2016_07_11_105204_add_foreign_key_to_books.php

仍然不能,

表格书:

public function up()
{
    Schema::create('books', function(Blueprint $table) {
        $table->increments('id');
        $table->string('title');
        $table->integer('author_id')->unsigned();
        $table->integer('amount')->unsigned();
        $table->timestamps();
    });
}

表作者:

public function up()
    {
        Schema::create('authors', function(Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->timestamps();
        });
    }

感谢您的帮助..

3 个答案:

答案 0 :(得分:1)

我有类似的问题。我找到了办法。这不是官方的

  1. 首先进入数据库。如果你使用mysql。有迁移表。看到迁移表有ROW 就像您的迁移文件名一样,例如2016_07_11_105204_books。
  2. 通过delete命令删除ROW。
  3. 删除或删除图书表。
  4. 然后转到命令提示符。再次提供命令php artisan migrate
  5. 它对我有用。

答案 1 :(得分:0)

Laravel 4.2的schema不支持更新列。所以你可以这样做(首先删除它,然后创建它作为外键):

Schema::table('books', function(Blueprint $table) {
{
    $table->dropColumn('author_id');
    $table->integer('author_id')->after('title')->unsigned();
    $table->foreign('author_id')->references('id')->on('authors')
            ->onDelete('restrict')
            ->onUpdate('cascade');
}

答案 2 :(得分:0)

对于具有--path选项的启动迁移调用命令,该命令仅具有目录路径。

php artisan migrate --path=app/database/migrations

您使用文件名设置-path