Делает ли откат mysql таблиц с последующей миграцией проблемы с сохранением данных? - PullRequest
0 голосов
/ 26 января 2020

Приведенный ниже код работал правильно, но после отката таблиц и повторной миграции я столкнулся со следующей ошибкой: я не внес никаких изменений в код !. Кто-нибудь сталкивался с этим раньше:

(2/2) QueryException
SQLSTATE[HY000]: General error: 1364 Field 'tier_level' doesn't have a default value (SQL: insert into `members` (`ffn`, `title`, `fname`, `mname`, `lname`, `dob`, `nat`, `gender`, `email`, `confemail`, `address`, `city`, `country`, `postcode`, `pobox`, `phone1`, `phone2`, `updated_at`, `created_at`) values (5675675, Mr, john, smith, adam, 1970-01-01, UK, Male, 11, 11, 123, 1111, UK, 222, 333, 123456789, 987654321, 2020-01-26 18:54:53, 2020-01-26 18:54:53))

Контроллер

public function addContact(Request $request) {
    if ($request->isMethod('post')) {
        $temp1 = 'Temporary';
        $temp2 = 10;
        $newMember = new Member();
        $newMember->title=$request->input('title');
        $newMember->tier_level=$temp1;
        $newMember->fname=$request->input('fname');
        $newMember->mname=$request->input('mname');
        $newMember->lname=$request->input('lname');
        $newMember->dob=$request->input('dob');
        $newMember->nat=$request->input('nat');
        $newMember->gender=$request->input('gender');
        $newMember->email=$request->input('email');
        $newMember->confemail=$request->input('confemail');
        $newMember->address=$request->input('address');
        $newMember->city=$request->input('city');
        $newMember->country=$request->input('country');
        $newMember->postcode=$request->input('postcode');
        $newMember->pobox=$request->input('pobox');
        $newMember->phone1=$request->input('phone1');
        $newMember->phone2=$request->input('phone2');
        $newMember->earned_miles=$temp2;

        $newMember->save();
    }
    return view('add');
}

Файл миграции

<?php

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

class CreateMembersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        //
        Schema::create('members', function (Blueprint $table) {
            $table->increments('id');
            $table->string('title');
            $table->string('tier_level');
            $table->string('ffn');
            $table->string('fname');
            $table->string('mname');
            $table->string('lname');
            $table->date('dob');
            $table->string('nat');
            $table->string('gender');
            $table->string('email');
            $table->string('confemail');
            $table->string('address');
            $table->string('city');
            $table->string('country');
            $table->string('postcode');
            $table->string('pobox');
            $table->string('phone1');
            $table->string('phone2');
            $table->integer('earned_miles');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */

    public function down()
    {
      //
      Schema::dropIfExists('members');
    }
}

Выше мой файл миграции, я откатился и добавил уровень_уровня поле затем мигрировал снова. это все, что я сделал.

1 Ответ

0 голосов
/ 27 января 2020

Трудно догадаться по ограниченному коду, но я предполагаю, что с вашей моделью что-то не так.

  • Ваша ошибка сообщает, что она пытается вставить ffn (первое поле в операторе INSERT), но вы не заполняете его в своей функции addContact, поэтому его нужно установить где-то еще. не код, который фактически выполняет и вызывает вашу ошибку. Поэтому первое место для проверки - ваша модель
  • Проверьте в другом месте вашей кодовой базы, чтобы увидеть, установлено ли где-то ffn, а также где нет ссылки на tier_level.

Это должно привести вас к правильной области, чтобы выглядеть по крайней мере.

...