Добавить [тип] в заполняемое свойство, чтобы разрешить массовую ошибку назначения при вставке classname в таблицу

#laravel

#laravel

Вопрос:

Я пытаюсь вставить classname ie. App ModelsCustomerImport в таблицу с помощью следующего кода:

 $import = Import::create([
            'type' => $type, \evaluates to AppModelsCustomerImport
            'campaign_id' => session('activeCampaign'),
            'filename' => $filename,
            'original_filename' => $originalFilename,
            'extra_attributes' => $extraAttributes,
        ]);
  

Я получаю ошибку, Add [type] to fillable property to allow mass assignment on [AppModelsCustomerImport].

У кого-нибудь есть идея, почему это может происходить?

РЕДАКТИРОВАТЬ, чтобы устранить путаницу, Import и CustomerImport — это две разные модели. Я пытаюсь вставить данные в таблицу импорта, используя модель импорта. Один из столбцов — это type, который должен быть classname . Модель импорта приведена ниже

 class Import extends Model
{
    use LogsActivity;
    use HasChildren;

    protected $fillable = [
        'campaign_id',
        'type',
        'filename',
        'original_filename',
        'rows_total_count',
        'rows_success_count',
        'rows_error_count',
        'processed_at',
        'failed_at',
        'pruned_at',
    ];

 
   
}
  

РЕШЕНИЕ
Я, наконец, разобрался с проблемой. Я использую код импорта csv члена команды в свое приложение. В импорте и пользовательском импорте он использовал родительский пакет от Калеба Порцио, . Это дает возможность получить доступ к дочерней модели из родительской и наоборот. Для этого модель CustomerImport расширяет модель импорта, однако я этого не заметил, и моя расширяла модель по умолчанию, отсюда и ошибка.

Комментарии:

1. Можете ли вы поделиться своей моделью Import ?

2. В документации есть информация о массовом присвоении. Просто добавьте type в $fillable массив

3. В сообщении об ошибке указано: добавить type столбец в заполняемое свойство в вашей AppModelsCustomerImport модели

4. Я добавил уточнение. CustomerImport и Import — это две разные модели. Я пытаюсь вставить данные в таблицу импорта, используя модель импорта, которая имеет заполняемый атрибут ‘type’

Ответ №1:

Вы должны добавить type в класс заполняемое свойство в вашей модели.

App Models CustomerImport

 class CustomerImport extends Model {
...
public $fillable = ['type','campaign_id','filename','original_filename','extra_attributes'];
...
}
  

Или вы можете добавить $guarded свойство, которое позволяет заполнять все свойства.

 class CustomerImport extends Model {
...
protected $guarded = [];
...
}
  

Ответ №2:

В eloquent ORM атрибут $fillable представляет собой массив, содержащий все те поля таблицы, которые могут быть заполнены с помощью массового присваивания.

Массовое присвоение относится к отправке массива в модель для непосредственного создания новой записи в базе данных.

 class CustomerImport extends Model 
{
     protected $fillable = [
        'type',
        'campaign_id',
        'filename',
        'original_filename',
        'extra_attributes'
    ];   
}
  

Это должно было решить проблему.