I'm on Laravel 5.4, PHP 5.6, Ubuntu 18.04. When I run php artisan migrate
, I get:
In Connection.php line 647:
SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'post_id' (SQL: alter table `comments` add `po
st_id` int unsigned not null, add `user_id` int unsigned null)
In Connection.php line 449:
SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'post_id'
I'm trying to use https://github.com/klisl/laravel-comments. Before trying to perform a migration with this package I had created DB at phpMyAdmin, had configured .env
by adding DB name and stuff, had successfully run php artisan migrate
, php artisan make:auth
and php artisan make:controller AuthController
. Then, after running php artisan vendor:publish --provider="Klisl\Comments\CommentsServiceProvider"
I get 2 new files in migrations
folder: date_number_CreateCommentsTable.php and date_number_ChangeCommentsTable.php
Here's source from these 2 files:
CreateCommentsTable.php:
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
/**
* Class CreateCommentsTable
*/
class CreateCommentsTable extends Migration
{
/** @return void */
public function up()
{
Schema::create('comments', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email');
$table->text('text');
$table->integer('parent_id')->nullable(); //разрешаем null;
$table->boolean('status')->default(config('comments.show_immediately'));
$table->timestamps();
});
}
/** @return void */
public function down()
{
Schema::dropIfExists('comments');
}
}
ChangeCommentsTable.php:
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
/**
* Class ChangeCommentsTable
*/
class ChangeCommentsTable extends Migration
{
/** @return void */
public function up()
{
Schema::table('comments', function (Blueprint $table) {
$table->integer(config('comments.key_field'))->unsigned();
$table->foreign(config('comments.key_field'))->references('id')->on(config('comments.key_table'));
if(config('comments.user')){
$table->integer('user_id')->unsigned()->nullable(); //разрешаем null
$table->foreign('user_id')->references('id')->on('users');
}
});
}
/** @return void */
public function down()
{
Schema::table('comments', function (Blueprint $table) {
//
});
}
}
So then I run php artisan migrate
and get the error I've written about above.
I've already tried adding ->unsigned()
at CreateCommentsTable. Also I've tried to put the foreign keys out of the function at ChangeCommentsTable like this:
/** @return void */
public function up()
{
Schema::table('comments', function (Blueprint $table) {
$table->integer(config('comments.key_field'))->unsigned();
if(config('comments.user')){
$table->integer('user_id')->unsigned()->nullable(); //разрешаем null
}
});
Schema::table('comments', function ($table){
$table->foreign(config('comments.key_field'))->references('id')->on(config('comments.key_table'));
});
Schema::table('comments', function ($table){
if(config('comments.user')){
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
}
});
}
/** @return void */
public function down()
{
Schema::dropForeign([config('comments.key_field')]);
Schema::dropForeign(['user_id']);
Schema::table('comments', function (Blueprint $table) {
//
});
}
and this:
Schema::table('comments', function ($table){
$table->foreign(config('comments.key_field'))->references('id')->on(config('comments.key_table'));
if(config('comments.user')){
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
}
});
As any of didn't work out, I decided to post the default version of source above. If you help me with this, you really save my day c:
via Chebli Mohamed
Aucun commentaire:
Enregistrer un commentaire