λ¬Έμμμ λΉ νμ 건λλ°λ λ°©λ²μ 무μμ λκΉ?
ν°μΌμ μ μΆν΄ μ£Όμ μ κ°μ¬ν©λλ€. λΆννλ κ·νκ° μ 곡ν μ 보λ λΆμμ ν©λλ€. μ°λ¦¬λ λΉμ μ΄ μ¬μ©νλ λ²μ κ³Ό κ·Έκ²μ μ¬μμ°νλ λ°©λ²μ μμμΌ ν©λλ€. μ½λ μμ λ₯Ό ν¬ν¨νμμμ€. μλ ΉνκΈ° μ μ (https://github.com/Maatwebsite/Laravel-Excel/blob/3.0/.github/ISSUE_TEMPLATE.md) λλ½λ μ 보λ₯Ό νμΈνκ³ μΆκ°νμΈμ. μ΄ ν°μΌμ ν¨μ¬ μ½κ² μ²λ¦¬ν μ μλλ‘ (https://laravel-excel.maatwebsite.nl/docs/3.0/getting-started/contributing) λ¬Έμ ν νλ¦Ώμ μμ±νλμ§ λ€μ νμΈνμμμ€. λ°λ₯΄κ². μ΄λ κ² νλ©΄ λ³΄λ€ ν¨μ¨μ μΌλ‘ ν°μΌμ μλ Ήν μ μμ΅λλ€. μ§μΉ¨μ μ¬λ°λ₯΄κ² λ°λ₯΄λ λ¬Έμ λ λ€λ₯Έ λ¬Έμ λ³΄λ€ μ°μ ν©λλ€.
#1834μ 볡μ
ToCollection λ©μλλ₯Ό μ¬μ©νμ¬ if($row->filter()->isNotEmpty())
λ΄μ λͺ¨λ νλͺ©μ λνν©λλ€.
```
κ³΅κ° ν¨μ 컬λ μ
(컬λ μ
$rows)
{
foreach($rowλ₯Ό $rowλ‘) {
if($row->filter()->isNotEmpty()){
// λ‘μ§μ μ¬κΈ°λ‘ κ° μ μμ΅λλ€.
$user = User::create([
'name' => ucwords($row['name']),
'class' => $row['class'],
...
]);
}
}
}
```
toModel λ°©μμμλ μ΄λ»κ² μλν©λκΉ?
toModelμμ nullμ λ°ννλ©΄ ν΄λΉ νμ 건λλΈ μ μμ΅λλ€.
μλ
νμΈμ,
$row->filter()->isNotEmpty()λ₯Ό μ¬μ©νλ €κ³ μλνμ§λ§ WithValidationμ μ¬μ©νκΈ° λλ¬Έμ μ½λκ° μ ν¨μ± κ²μ¬ μ€λ₯μ ν¨κ» μ€μ§λ©λλ€. λ΄ κ·μΉμ λ€μκ³Ό κ°μ΅λλ€.
public function rules(): array
{
return [
'name' => 'required',
'*.name' => 'required',
'email' => 'required|email',
'*.email' => 'required|email',
'discount' => 'nullable|numeric',
'*.discount' => 'nullable|numeric',
];
}
λΆννλ, Excel νμΌμ΄ μλ κ²½μ° Excel νμΌ λμ μλ μΌλΆ νμ λ΄μ©μ μμ νλ©΄ Laravel-Excelμ μ¬μ ν ββν΄λΉ νμ λΉμ΄ μμ§ μμ κ²μΌλ‘ μΈμν©λλ€. κ·Έλ° λ€μ μ ν¨μ± κ²μ¬κ° μ€ν¨ν©λλ€. μ ν¨μ± κ²μ¬ μ μ μ΄λ¬ν νμ 건λλ°κ³ μΆμ΅λλ€.
@seven21 , μ΄μ λν ν΄κ²°μ± μ μ°Ύμμ΅λκΉ? λꡬλ μ§μ΄ λ¬Έμ λ₯Ό ν΄κ²° νμ΅λκΉ?
μ κ²½μ°μ λμμ΄ λλ ν΄κ²° λ°©λ²μ μ¬μ©ν©λλ€. μ ν¨μ± κ²μ¬λ μ€λ₯λ₯Ό νΌνκΈ° μν΄ λͺ¨λ νμμ nullableλ‘ νμ₯λ λ€μ λ΄κ° μΆκ°ν λ°©λ²μμ
public function model(array $row)
{if(!array_filter($row)) { return null;}
return new Customer([.....
λ° μ΄ μμ μμ μ΄ νμ 건λλλλ€. μ μ©ν μ€λ₯ λ©μμ§λ₯Ό λ°νν μλ μμ§λ§ μ½λλ₯Ό μ€ννλ κ°μ₯ μ’μ λ°©λ²μ μ°Ύμ§ λͺ»νκΈ° λλ¬Έμ μ΄μ λ§μ‘±νμ§ μμ΅λλ€.
@seven21 μΈμ€ν΄μ€μ μ μ©ν λ©μμ§μ λν΄ λλ¨ν κ°μ¬ν©λλ€. κ·Έλ¬λ μ€μ λ‘ μ ν¨μ± κ²μ¬λ₯Ό μ¬μ©νλ κ²½μ°μλ μ΄κ²μ΄ μ’μ λ°©λ²μ΄ μλλΌκ³ μκ°ν©λλ€.
@mohamednizar μ΄ λ¬Έμ λ₯Ό μ΄λ»κ² ν΄κ²°νμ΅λκΉ?
μ΄ λ¬Έμ λ₯Ό μμ ν ν΄κ²°νμ§λ λͺ»νμ§λ§ λ΄ μ루μ μ μν΄ λ€μκ³Ό κ°μ μ¬μ©μ μ§μ ν¨μλ₯Ό μΆκ°νμ¬ λ°°μΉ ν¬κΈ°μ ν μ νμ λ°ννμ΅λλ€. μ΄μ λ°μ΄ν°κ° μλ κ²½μ°μλ§ ν μ νμ΄ κ³μ°λ©λλ€.
public function limit(): int {
$highestColumn = $this->worksheet->getHighestDataColumn(3);
$higestRow = 0;
for ($row = $this->startRow(); $row <= $this->highestRow; $row++) {
$rowData = $this->worksheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, NULL, TRUE, FALSE);
if (isEmptyRow(reset($rowData))) {
continue;
} else {
$higestRow += 1;
}
}
return $higestRow;
}
public function batchSize(): int {
$highestColumn = $this->worksheet->getHighestDataColumn(3);
$higestRow = 1;
for ($row = $this->startRow(); $row <= $this->highestRow; $row++) {
$rowData = $this->worksheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, NULL, TRUE, FALSE);
if (isEmptyRow(reset($rowData))) {
continue;
} else {
$higestRow += 1;
}
}
if ($higestRow == 0) {
exit;
} else {
return $higestRow;
}
}
λλλ‘ μ΄κ²μ μΌμ’ μ λ¬Έμ λ₯Ό ν΄κ²°νλ λ° λμμ΄ λ μ μμ΅λλ€.
config/excel.php νμΌμ μ λ°μ΄νΈνμ¬ λΉ νμ 무μν μ μμ΅λλ€.
μμ:
/*
|--------------------------------------------------------------------------
| Ignore Empty
|--------------------------------------------------------------------------
|
| When dealing with imports, you might be interested in ignoring
| rows that have null values or empty strings. By default rows
| containing empty strings or empty values are not ignored but can be
| ignored by enabling the setting ignore_empty to true.
|
*/
'ignore_empty' => false,
μκ²:
/*
|--------------------------------------------------------------------------
| Ignore Empty
|--------------------------------------------------------------------------
|
| When dealing with imports, you might be interested in ignoring
| rows that have null values or empty strings. By default rows
| containing empty strings or empty values are not ignored but can be
| ignored by enabling the setting ignore_empty to true.
|
*/
'ignore_empty' => true,
κ°μ₯ μ μ©ν λκΈ
μλ νμΈμ,
$row->filter()->isNotEmpty()λ₯Ό μ¬μ©νλ €κ³ μλνμ§λ§ WithValidationμ μ¬μ©νκΈ° λλ¬Έμ μ½λκ° μ ν¨μ± κ²μ¬ μ€λ₯μ ν¨κ» μ€μ§λ©λλ€. λ΄ κ·μΉμ λ€μκ³Ό κ°μ΅λλ€.
public function rules(): array { return [ 'name' => 'required', '*.name' => 'required', 'email' => 'required|email', '*.email' => 'required|email', 'discount' => 'nullable|numeric', '*.discount' => 'nullable|numeric', ]; }
λΆννλ, Excel νμΌμ΄ μλ κ²½μ° Excel νμΌ λμ μλ μΌλΆ νμ λ΄μ©μ μμ νλ©΄ Laravel-Excelμ μ¬μ ν ββν΄λΉ νμ λΉμ΄ μμ§ μμ κ²μΌλ‘ μΈμν©λλ€. κ·Έλ° λ€μ μ ν¨μ± κ²μ¬κ° μ€ν¨ν©λλ€. μ ν¨μ± κ²μ¬ μ μ μ΄λ¬ν νμ 건λλ°κ³ μΆμ΅λλ€.