Laravel Import CSV/Excel a validacia

Laravel Import CSV/Excel a validacia
« kdy: 16. 01. 2023, 23:25:34 »
Zdravicko skusam export/import s a do Laravelu.
V podstate to funguje ale neviem celkom dobre uchopit validaciu dat.
A sice ak som to spravne pochopil podla https://docs.laravel-excel.com/3.1/imports/validation.html#custom-validation-attributes pisu o kontrole riadku ale ako validovat cely dokument na import? Ak napriklad chcem v prvom slpci len datum v druhom len cislo atd by som asi vedel ale ako validovat to aby vzdy dlzku len 10 udajov? TEda 10 riadkov?

Kód: [Vybrat]
class CsvImport implements ToModel, WithHeadingRow
{
    /**
    * @param array $row
    *
    * @return \Illuminate\Database\Eloquent\Model|null
    */
public function rules(): array
{
    return [
        '1' => 'integer:day_position'
    ];

}
    public function model(array $row)
    {
        return new Csv([
            'planed_day'     => $row['planed_day'],
            'device_id'    => $row['device_id'],
            'day_position'    => $row['day_position'],
            'value'    => $row['value'],
         
        ]);
    }
}


Re:Laravel Import CSV/Excel a validacia
« Odpověď #1 kdy: 17. 01. 2023, 06:47:59 »
(Disclaimer: Laravel neznám, takže tohle je pouze výsledek googlení)
Podle https://stackoverflow.com/a/69927977 to vypadá, že by mělo stačit naimplementovat Maatwebsite\Excel\Concerns\WithLimit

Re:Laravel Import CSV/Excel a validacia
« Odpověď #2 kdy: 24. 01. 2023, 07:52:38 »
snugar_i :
V podstate to pomohlo ale stale to nie je "smart ako potrebujem". Ako by sa tam dala do implementovať kontrola obsahu csv ci uz existuje v databaze? Lebo chapem ze ochrana skrz  rules() ale nechapem ako validovat napriklad planed_day ci uz existuje v db resp. ci uz existuje pozicia pre ten planovany den.

Kód: [Vybrat]
  public function rules(): array
    {
        return [
            'planed_day' => ['required', 'string', 'min:2', 'max:60'],
            'device_id' => ['required','numeric','gt:0'],
            'day_position' => ['required','numeric'],
            'value' => ['required','numeric','min:0', 'max:1000'],
            'device_parameter' => ['required','string','min:2', 'max:60'],
           
        ];
    }

Re:Laravel Import CSV/Excel a validacia
« Odpověď #3 kdy: 24. 01. 2023, 13:07:16 »
Kontrola toho ci uz objekt je alebo nie je v databaze umozni pravidlo exists https://laravel.com/docs/9.x/validation#rule-exists

V priprade potreby komlpexnejsej validacnej logiky je mozne vytvorit si pravidlo vlastne: https://laravel.com/docs/9.x/validation#custom-validation-rules
« Poslední změna: 24. 01. 2023, 13:09:43 od jan s »

Re:Laravel Import CSV/Excel a validacia
« Odpověď #4 kdy: 24. 01. 2023, 14:06:10 »
Kontrola toho ci uz objekt je alebo nie je v databaze umozni pravidlo exists https://laravel.com/docs/9.x/validation#rule-exists

V priprade potreby komlpexnejsej validacnej logiky je mozne vytvorit si pravidlo vlastne: https://laravel.com/docs/9.x/validation#custom-validation-rules

ach, zle som si vsimol, ze tie validacne pravidla v poste su pravidla priamo pre laravel-excel..


Re:Laravel Import CSV/Excel a validacia
« Odpověď #5 kdy: 24. 01. 2023, 14:16:20 »
slano:  a otazka je ako natiahnut kontrolu piamo nad ten excel. Nieco som musel prehliadnut pretoze neverim ze to nie je mozne skrz nieco

Re:Laravel Import CSV/Excel a validacia
« Odpověď #6 kdy: 24. 01. 2023, 15:23:52 »
snugar_i :
V podstate to pomohlo ale stale to nie je "smart ako potrebujem". Ako by sa tam dala do implementovať kontrola obsahu csv ci uz existuje v databaze? Lebo chapem ze ochrana skrz  rules() ale nechapem ako validovat napriklad planed_day ci uz existuje v db resp. ci uz existuje pozicia pre ten planovany den.
Možná to je tohle? https://docs.laravel-excel.com/3.1/imports/model.html#upserting-models
Že bys vrátil
Kód: [Vybrat]
['planed_day', 'day_position']
Jinak mi celá ta Laravel importační knihovna přijde nešťastně navržená - snažili se to udělat tak, aby framework volal uživatelský kód, ale zrovna tady by to asi bylo stokrát jednodušší naopak (kdyby uživatel prostě dostal něco, co mu vrací řádky, a sám by si je převáděl a ukládal)

Re:Laravel Import CSV/Excel a validacia
« Odpověď #7 kdy: 25. 01. 2023, 12:26:48 »
slano:  a otazka je ako natiahnut kontrolu piamo nad ten excel. Nieco som musel prehliadnut pretoze neverim ze to nie je mozne skrz nieco

Este raz som pozrel tu dokumentaciu k laravel-excel, rules() metoda akceptuje validacne pravidla frameworku, cize by to malo bez problemov fungovat.

The rules() method, expects an array with Laravel Validation rules to be returned.