Я начинаю с самообучающегося проекта, построенного на вершине Laravel 5.2, и я нашел свою первую проблему: саморекламу в миграции.Как создать отношения саморекламы (внешний ключ) в миграции Laravel?
Это как файл 2016_08_02_024942_create_navigation_table.php
выглядит как (у меня есть удалить комментарии для не сделать пост слишком долго):
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateNavigationTable extends Migration
{
public function up()
{
Schema::create('navigation', function (Blueprint $table) {
$table->engine = 'InnoDB';
$table->increments('id')->unsigned();
$table->integer('position')->unsigned();
$table->string('title');
$table->string('slug');
$table->string('permissions')->nullable();
$table->timestamps();
$table->softDeletes();
});
}
public function down()
{
Schema::drop('articles');
}
}
И потом, потому что я прочитал несколько постов здесь, как this, this, this и много больше я сделать еще один файл с только отношением с именем, как 2016_08_02_030158_add_parent_to_navigation_table.php
со следующим кодом:
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddParentToNavigationTable extends Migration
{
public function up()
{
Schema::table('navigation', function (Blueprint $table) {
$table->foreign('parent_id')->references('id')->on('navigation')->onUpdate('cascade')->onDelete('cascade');
});
}
public function down()
{
Schema::drop('articles');
}
}
Но когда я запускаю команду php artisan migrate
я получил т он следующее сообщение об ошибке, и я не уверен, что я делаю неправильно:
[Осветите \ Database \ QueryException] SQLSTATE [42S01]: Базовая таблица или вид уже существует: 1050 Таблица «навигация» уже существует (SQL: создать таблицу
navigation
(id
Int неподписанных не нулевой auto_increment первичный ключ,position
Int неподписанных не равно нулю,title
Varc хар (255) не равно нулю,slug
VARCHAR (255) NOT NULL,permissions
VARCHAR (255) нуль,created_at
метка времени нулевой ,updated_at
timestamp null,deleted_at
метки набор нуля) символов по умолчанию utf8 сверять utf8_unicode_ci Engin е = InnoDB)[PDOException] SQLSTATE [42S01]: Базовая таблица или представление уже существует: 1050 Таблица 'навигация' уже существует
Can дайте мне несколько советов? Что я делаю неправильно? У меня есть this package, но я не уверен, решит ли он мою проблему.
Вы очистили базу данных, прежде чем запускать ее снова? – xdevnull
Также вам не нужно добавлять '' 'unsigned()' '' for '' 'increments()' '', но по умолчанию он неподписан (Tip) – xdevnull
@xdevnull Я запустил команду 'php artisan migrate: rollback 'и он очищает DB – ReynierPM