You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Laravel和mattwebsite excel将Excel的yes/no转换为0/1导入数据库

Laravel Excel导入yes/no转0/1存储方案

你提到的mattwebsite excel package实际为Laravel生态常用的maatwebsite/excel导入导出扩展,可通过以下3种常用方案实现字段值自动转换:

方案1:Import类model方法内直接转换(最常用)

适用于仅当前导入任务需要做转换的场景,在生成的Import类的model方法中处理字段映射即可:

<?php

namespace App\Imports;

use App\Models\YourModel;
use Maatwebsite\Excel\Concerns\ToModel;

class YourModelImport implements ToModel
{
    public function model(array $row)
    {
        return new YourModel([
            // 其他字段正常映射
            '你的int类型字段名' => strtolower(trim($row['Excel中对应列的名称/索引'])) === 'yes' ? 1 : 0,
            // 其他字段
        ]);
    }
}

方案2:导入验证前预处理

如果需要先转换值再做字段校验,可在Import类中引入WithPreparation 契约,实现prepareForValidation方法:

<?php

namespace App\Imports;

use App\Models\YourModel;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithPreparation;

class YourModelImport implements ToModel, WithPreparation
{
    public function prepareForValidation($row, $index)
    {
        // 提前转换目标字段值
        $row['Excel对应列名'] = strtolower(trim($row['Excel对应列名'])) === 'yes' ? 1 : 0;
        return $row;
    }

    public function model(array $row)
    {
        return new YourModel([
            // 此时row中对应字段已经是0/1,直接映射即可
            '你的int类型字段名' => $row['Excel对应列名'],
            // 其他字段
        ]);
    }
}

方案3:模型修改器全局转换

如果该字段在多个业务场景(包括导入、接口提交等)都需要接收yes/no值并自动转存为0/1,直接在对应模型中定义修改器即可一劳永逸:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class YourModel extends Model
{
    // 方法名按你的实际字段调整,规则为set+字段名大驼峰+Attribute
    public function setYourIntColumnAttribute($value)
    {
        $this->attributes['your_int_column'] = strtolower(trim($value)) === 'yes' ? 1 : 0;
    }
}

注意事项

  • 转换时统一转小写+去空格处理,可兼容Excel中YES/Yes/no等大小写、带空格的异常值
  • 若Excel列允许为空,可补充默认值逻辑,例如:strtolower(trim($row['xxx'] ?? 'no')) === 'yes' ? 1 : 0

内容的提问来源于stack exchange,提问作者saadia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 14:30:01