Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 22.04.2019 15:09:06

Не работает почему то коментраии

Привет при попытки оставить комментарий на сайте выдают такую ошибку

Illuminate \ Database \ QueryException (HY000)
SQLSTATE[HY000]: General error: 1364 Field 'id' doesn't have a default value (SQL: insert into `comments` (`name`, `text`, `post_id`, `updated_at`, `created_at`) values (Тест, Привет, 1, 2019-04-22 12:08:26, 2019-04-22 12:08:26))
Previous exceptions

    SQLSTATE[HY000]: General error: 1364 Field 'id' doesn't have a default value (HY000)

"SQLSTATE[HY000]: General error: 1364 Field 'id' doesn't have a default value (SQL: insert into `comments` (`name`, `text`, `post_id`, `updated_at`, `created_at`) values (Тест, Привет, 1, 2019-04-22 12:08:26, 2019-04-22 12:08:26)) ◀

Вот модель коментария

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Comment extends Model
{
    protected $fillable = ['id', 'name', 'text', 'post_id', 'status'];
    
    public function post()
    {
    	return $this->belongsTo('App\Post');
    }
}

Вот код контролера

 public function comment(Request $request)
    {
        $this->validate($request,[

            'name' => 'required',
            'text' => 'required',
           
        ]);

        

        
        Comment::create([

            'name' =>  $request->name,
            'text' => $request->text, 
            'post_id' => $request->post_id, 


        ]);
        
        return redirect()->back()->with('status', 'Комментарий добавлен');
    }

Не в сети

#2 22.04.2019 16:07:16

Re: Не работает почему то коментраии

id по каким-то причинам не автоинкрементное. покажи структуру таблицы как "create table...".


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

#3 22.04.2019 17:35:32

Re: Не работает почему то коментраии

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

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->text('text');
            $table->integer('post_id');
            $table->integer('status')->default(1);
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('comments');
    }
}

Не в сети

#4 22.04.2019 17:51:58

Re: Не работает почему то коментраии

покажи структуру таблицы как "create table...".

Schema::create('comments', function (Blueprint $table) {


)))))))))))))))))))

чото ржу. я попросил настоящую структуру таблицы, определение DDL SQL, которое можно добыть например в phpmyadmin или mysqldump. выглядит как

CREATE TABLE comments (
   id int(11) NOT NULL AUTO_INCREMENT,
...
   PRIMARY KEY (id));

то, что ты показал, оно по идее должно создавать автоинкерементный ключ, но ошибка говорит о том, что что-то пошло не так — надо проверить.

Изменено artoodetoo (22.04.2019 18:05:46)


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

#5 22.04.2019 20:19:53

Re: Не работает почему то коментраии

Не в сети

#6 22.04.2019 21:36:28

Re: Не работает почему то коментраии

Мне нечего добавить, всё уже сказано.


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

#7 23.04.2019 09:21:45

Re: Не работает почему то коментраии

Мне нечего добавить, всё уже сказано.

а как исправить можно ? на локльки работало все нормально

Не в сети

#8 23.04.2019 09:39:29

Re: Не работает почему то коментраии

Можно попробовать откатить и снова накатить миграцию


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

#9 23.04.2019 15:35:23

Re: Не работает почему то коментраии

Можно попробовать откатить и снова накатить миграцию

А как правильно откат сделать правильно что бы все не удалилось

Не в сети

#10 23.04.2019 16:20:44

Re: Не работает почему то коментраии

Универсального способа нет. Бекап по-любому надо сделать, а потом наверное восстанавить чего жалко. Но восстановить данные, а не структуру! Структура должна создаться миграцией. Её нельзя снова уничтожить.

Как правило бекап состоит из ddl т.е. drop table + create table
за которыми идёт dml, т.е. insert.
Надо строки с dml только выполнить.


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

#11 23.04.2019 16:22:04

Re: Не работает почему то коментраии

Короче, требуется определённый опыт, которого у вас нет, судя по всему. Договоритесь с кем-нибудь, не со мной smile


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

#12 25.04.2019 11:21:51

Re: Не работает почему то коментраии

Короче, требуется определённый опыт, которого у вас нет, судя по всему. Договоритесь с кем-нибудь, не со мной

На локльном серваке работает все нормально

Не в сети

#13 25.04.2019 11:36:40

Re: Не работает почему то коментраии

Перезалил БД выдало такую ошибку
http://prntscr.com/ngmg8k

Не в сети

#14 25.04.2019 11:39:28

Re: Не работает почему то коментраии

Решил проблему зашел в БД, там в таблице comment id я поставил автоинкримент

Не в сети

#15 25.04.2019 11:44:17

Re: Не работает почему то коментраии

Во всех таблица не работает id

Не в сети

#16 25.04.2019 16:02:55

Re: Не работает почему то коментраии

Как вы вообще создаёте эти таблицы? Если всё делается руками, то вините руки.

Есть два "нормальных" способа:
1. запускать миграции. где бы вы это ни делали, на локальном ли, на хостинге ли — будет одинаковый результат. И автоинкремент будет и длина ключа нормальная, т.к. она зависит от чарсета, а он в конфиге прописан.
2. сделать базу локально из миграции, заполнить данными, перенести на хостинг через создание дампа/восстановление из дампа. опять получаем точную копию. здесь нет возможности для ошибки!!!!!!!!!!!


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

Подвал раздела