HEX
Server: LiteSpeed
System: Linux sv4.hami.host 5.14.0-611.54.3.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Thu May 7 16:31:24 EDT 2026 x86_64
User: armgroup (1008)
PHP: 8.2.32
Disabled: show_source, system, shell_exec, passthru, exec, popen, proc_open, mail, socket_create, socket_create_listen, socket_create_pair, link, dl, openlog, syslog, stream_socket_server, curl_multi_init
Upload Files
File: /home/armgroup/libs/app/Imports/CategoryProductImport.php
<?php

namespace App\Imports;

use App\Models\Category;
use App\Models\Product;
use DB;
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\SkipsEmptyRows;
use Maatwebsite\Excel\Concerns\ToCollection;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Concerns\WithValidation;
use Maatwebsite\Excel\Imports\HeadingRowFormatter;

HeadingRowFormatter::default('none');

class CategoryProductImport implements SkipsEmptyRows, ToCollection, WithHeadingRow, WithValidation
{
    public function collection(Collection $rows)
    {
        $data = [];

        $categories = Category::pluck('id')->toArray();

        foreach ($rows as $row) {
            $arr = explode('|', $row['category']);
            foreach ($arr as $i => $catID) {
                if (in_array($catID, $categories)) {
                    $data[] = [
                        'is_main' => count($arr) == ($i + 1),
                        'category_id' => $catID,
                        'categorizable_id' => $row['product'],
                        'categorizable_type' => Product::class,
                    ];
                }
            }
        }

        DB::table('categorizables')->insert($data);
    }

    public function rules(): array
    {
        return [];
    }

    public function batchSize(): int
    {
        return 1000;
    }
}