gpt4 book ai didi

php - Laravel Maatwebsite/Laravel-Excel 更新(如果存在)

转载 作者:行者123 更新时间:2023-12-04 09:26:25 24 4
gpt4 key购买 nike

我正在使用这个包 Maatwebsite/Laravel-Excel从excel文件导入数据

我想做的是在从 excel 文件导入数据之前检查该列是否存在,

如果是,则更新,否则插入

型号:

<?php

namespace App\Imports;

use App\Medicine;
use Carbon\Carbon;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Imports\HeadingRowFormatter;

HeadingRowFormatter::default('none');
class MedicineImport implements ToModel, WithHeadingRow
{
protected $company_id;

public function __construct($company_id)
{
$this->company_id = $company_id;
}
/**
* @param array $row
*
* @return \Illuminate\Database\Eloquent\Model|null
*/
public function model(array $row)
{
$expire_date = empty($row['Expire Date']) ? $row['Expire Date'] : Carbon::instance(\PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($row['Expire Date']));
return new Medicine([
'name' => $row['Name'],
'price' => $row['Price'],
'expire_date' => $expire_date,
'company_id' => $this->company_id,

]);
}
}

Controller :

$company = Company::where('id',$id)->first();
$medicines=DB::table('medicines')->where('company_id', $id)->delete();
$company_id= $id;
Excel::import(new MedicineImport($company_id),request()->file('file'));

return redirect()->route('company.medicine.index',$company_id);

有什么想法吗?

最佳答案

您需要在插入之前进行检查,例如:

public function model(array $row)
{
$exists = Medicine::where('name',$row['Name'])->where('company_id',$this->company_id)->first();
if ($exists) {
//LOGIC HERE TO UPDATE
return null;
}

$expire_date = empty($row['Expire Date']) ? $row['Expire Date'] : Carbon::instance(\PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($row['Expire Date']));
return new Medicine([
'name' => $row['Name'],
'price' => $row['Price'],
'expire_date' => $expire_date,
'company_id' => $this->company_id,

]);
}

关于php - Laravel Maatwebsite/Laravel-Excel 更新(如果存在),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62996667/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com