Я знаю, что это маленькая легкая логика c, но для меня это сложная задача. Я использую Laravel Excel от https://laravel-excel.com/
У меня есть файл CSV, который имеет такие данные, как: https://i.ibb.co/WfLZbVd/1.png
I хотите импортировать некоторые CSV и проверить существующие данные и не вставлять их в базу данных. Но я хочу вставить данные, которых не было в базе данных, и я не знаю, как их проверить.
Я просто хочу вставить новые данные вместе и запретить старые. И почему я это делаю? Это сделано для предотвращения дублирования данных после импорта CSV в базу данных и уменьшения человеческих ошибок.
У меня есть пример кода, подобный следующему:
<?php
namespace App\Imports\Points;
use App\Models\PointRegular;
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\ToCollection;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Concerns\Importable;
class PointsRegularImport implements ToCollection, WithHeadingRow
{
use Importable;
public function collection(Collection $rows)
{
foreach($rows as $row) {
// Check existing data in database
$pointRegulars = PointRegular::orderBy('created_at', 'desc')
->where('product_id', $row['product_id'])
->where('channel_id', $row['channel_id'])
->where('transaction_type_id', $row['transaction_type_id'])
->where('payment_method_id', $row['payment_method_id'])
->get();
foreach($pointRegulars as $pointRegular) {
// Check for update data with id
if($row->has('id')) {
if($pointRegular->id == $row['id']) {
$point = PointRegular::findOrFail($row['id']);
$point->product_id = $row['product_id'];
$point->channel_id = $row['channel_id'];
$point->transaction_type_id = $row['transaction_type_id'];
$point->payment_method_id = $row['payment_method_id'];
}
} else {
// Create new data
// Check for data existed in database
// If exist, deny existed data and insert new data
if($pointRegular) {
return "Existed and not insert";
} else {
return "You Inserting new data without creating the old one";
}
}
}
}
}
}
Я просто хочу вставить новый данные и отрицание старых данных.
Спасибо за помощь.