Как исправить ошибку «Столбец не найден» при добавлении данных в базу данных [SQLSTATE[42S22]]

#mysql #sql #laravel

#mysql #sql #laravel

Вопрос:

Пытаюсь добавить данные в базу данных, используя эту строку

 $this->project->description()->create( $this->getDescriptionData() );
  

Как мне справиться с этой ошибкой SQLSTATE[42S22]: Column not found: 1054 Unknown column 'description' in 'field list' ? Обратите внимание, что описание поля уже существует в таблице базы данных, в которую я пытаюсь вставить данные.

—————

У меня есть Project класс that hasOne( ProjectDescription::class) и класс belongsTo(Project:class) ProjectDescpription .

В классе ProjectDescription у меня есть description поле, равное $fillable .

что я пробовал

Я попытался переименовать поле description в базе данных в content и сделать то же самое в своем коде. Да, это работает, но мне нужно понять, почему это не работает, когда столбец установлен как description

миграция для таблицы описания проекта

 

       Schema::create('project_descriptions', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->bigInteger('project_id');
            $table->text('decsription');
            $table->integer('payment_method_id');
            $table->bigInteger('target');
            $table->string('image_path')->nullable();
            $table->string('video_url')->nullable();
            $table->dateTime('start_date')->nullable();
            $table->dateTime('end_date')->nullable();
            
            $table->longText('options')->nullable();
            $table->timestamps();
            $table->softDeletes();
        });
  

Вот мой класс проекта и класс описания проекта соответственно

 
class Project extends Model
{
    protected $fillable = ['title', 'user_id', 'category_id'];

    /**
     * description
     *
     * @return ModulesSystemEntitiesProjectDescription
     */
    public function description()
    {
        return $this->hasOne(ProjectDescription::class);
    }
  

Описание проекта

 
class projectDescription extends Model
{
    protected $fillable = [ 'description', 'payment_method_id', 'target', 'image_path', 'video_url', 'start_date', 'end_date'];

    /**
     * project
     *
     * @return ModulesSystemEntitiesProject
     */
    public function project()
    {
        return $this->belongsTo(Project::class);
    }
  

Я ожидаю, что данные будут записаны в БД, но вместо этого я получаю эту ошибку sql, в то время как рассматриваемый столбец уже существует в моей таблице базы данных

 SQLSTATE[42S22]: Column not found: 1054 Unknown column 'description' in 'field list' (SQL: insert into `project_descriptions` (`description`, `payment_method_id`, `target`, `image_path`, `video_url`, `start_date`, `end_date`, `project_id`, `updated_at`, `created_at`) values (dgtfjkgfbgnyt ghvb mkyu, 1, 1200, , https://www.youtube.com/watch2019-04-25v=1J0-BzpFjMg, 2019-05-17, 7, 2019-04-20 23:42:24, 2019-04-20 23:42:24, ?))
  

Ответ №1:

В процессе миграции для таблицы описания проекта

Изменить

 $table->text('decsription');
  

Для

 $table->text('description');