λͺ¨λΈμ μ§μ μ μ₯νμ§ μκ³ κ°μ Έμ¬ μ μμ΄μΌν©λλ€. κ°μ Έ μ€κΈ°μμ λͺ¨λΈ μ΄μΈμ νλͺ©μ λ°ν ν μλ μμ΅λλ€.
νμ¬ 2.1.30μμ 3.0.0 μ΄μμΌλ‘ μ κ·Έλ μ΄λ ν μ μμ΅λλ€. λͺ¨λΈ μΈνΈλ₯Ό μ μ₯νμ§ μκ³ κ°μ Έμ¬ μ μμ΄μΌν©λλ€. λλ μ΄κ²μ ν μ€νΈμ μ¬μ©ν©λλ€. λν νμ μλ‘ λ€λ₯Έ ν΄λμ€μ λ κ°μ κ΄λ ¨ λͺ¨λΈμ λ§λλ μ λ³΄κ° ν¬ν¨ λ ν μ€νΈκ° μμ΅λλ€. νμ¬λ νλΉ νλμ λͺ¨λΈ λ§ κ°μ§ μ μμ΅λλ€. μ¬κΈ°μμλ CSV νμΌμ μ¬κ΅¬μ± ν μ μμ΅λλ€.
IMO, 3.0.0+λ νλμ CSV νμΌμ΄ νλμ ν μ΄λΈμ ν΄λΉνκ³ νλμ νμ΄ νλμ λͺ¨λΈμ ν΄λΉνλ©° λͺ¨λ λͺ¨λΈμ μ¦μ μ μ₯ν΄μΌνλ μ΄μμ μΈ μν©μ λ무 μ§μ€ν©λλ€. μ΄κ²μ 2.Xμ κ²½μ°κ° μλμκ³ μ λ³κ²½λμλμ§ λͺ¨λ₯΄κ² μ΅λλ€.
λ²λ €μ§ phpoffice/phpexcel
ν¨ν€μ§κ° νμνκΈ° λλ¬Έμ 2.1.30μ λ¨Έλ¬Όκ³ μΆμ§ μμ΅λλ€.
μΆκ° λ°©λ²μ μΆκ°ν΄μΌν©λλ€ Excel
κ°μ μλͺ
μ΄ μΈκ΄, import
λμ κ·Έλ€μ μ μ½μ λ°ν λͺ¨λΈ. μ:
$users = Excel::load(new UsersImport, 'users.xlsx');
λν item
λ©μλλ₯Ό κ°μ Έ μ€κΈ° ν΄λμ€μ μΆκ°ν΄μΌν©λλ€.μ΄ λ©μλλ λͺ¨λΈ λ§ λμ λͺ¨λ μ νμ λ°ν ν μ μμ΅λλ€.
ToModel
μ κ°μ Έ μ€κΈ°λ₯Ό μ²λ¦¬νλ ν κ°μ§ λ°©λ² μΌλΏμ
λλ€. μ΄κ²μ ν μ½μ
λΉ 1 κ°μ λͺ¨λΈμ λ μ½κ² λ§λλ μ΅μ
μ
λλ€.
ToCollection
λ₯Ό μ¬μ©νλ κ²λ³΄λ€ λ²μ 2.1κ³Ό μ μ¬ν λ°©μμΌλ‘ λ€λ₯Έ ꡬ쑰λ₯Ό μ²λ¦¬νλ €λ©΄ : https://laravel-excel.maatwebsite.nl/3.1/imports/collection.html In μμ§ λ°©λ²μ 2.1μμ μ»μ κ²κ³Ό μ μ¬ν ν λͺ¨μμ κ°μ Έμ΅λλ€.
컨νΈλ‘€λ¬μ μμ νμ λ°ννλ ::toCollection
λ©μλλ³΄λ€ κ°μ Έ μ€κΈ° κ°μ²΄κ° μλ 컨νΈλ‘€λ¬μμλ§ λͺ¨λΈμ κ°μ Έ μ€λ €λ©΄ (μ€μ λ‘ κΆμ₯λλ λ°©λ²μ΄ μλ) .
(https://laravel-excel.maatwebsite.nl/3.1/imports/basics.html#importing-to-array-or-collection)
$users = Excel::toCollection(new UsersImport, 'users.xlsx');
@patrickbrouwers λ΅μ₯μ ToCollection
λ₯Ό ꡬννλ κ°μ Έ μ€κΈ°μμ Excel::import
λ₯Ό μ¬μ©νλ©΄ μ μ₯νμ§ μκ³ λͺ¨λΈ 컬λ μ
μ΄ λ°νλ©λκΉ? κ·Έλ λ€λ©΄ https://laravel-excel.maatwebsite.nl/3.1/imports/collection.html νλ¨μ μκ° λ€μκ³Ό κ°μ΄ λ¬Έμμ λͺ
ννκ² λͺ
μλμ΄ μμ§ μμ΅λλ€.
public function import()
{
Excel::import(new UsersImport, 'users.xlsx');
}
λ°ν κ°μ μ΄λμλ μ μ₯λμ§ μμΌλ―λ‘ κ°μ Έμ¨ λͺ¨λΈ 컬λ μ
μ΄ μ§μ μ μ₯λκ±°λ μ μ΄λ λ©μλμ λΆμμ©μ΄ μμμ μλ―Έν©λλ€. κ·Έλ μ§ μμΌλ©΄ λ°ν κ°μ λ³μμ ν λΉνμ§ μκ³ import
λ₯Ό νΈμΆνλ κ²μ μΈλͺ¨κ° μμ΅λκΉ?
@WouterFlorijn μλμ, ::import()
λ νμ΄λ λͺ¨λΈμ λ°ννμ§ μμ΅λλ€. Excel::toCollection()
λ§ν©λλ€.
ToCollection
κ΄μ¬μ¬λ₯Ό μ¬μ©νλ κ²μ Excel::toCollection()
μ¬μ©νλ κ²κ³Όλ λ€λ¦
λλ€.
ToCollection
ꡬννλ©΄ μ 체 κ°μ Έ μ€κΈ°κ° Import κ°μ²΄ λ΄μ μΊ‘μνλ©λλ€. ToCollection
μμ 무μΈκ°λ₯Ό λ°ννλ©΄ 컨νΈλ‘€λ¬λ‘ λ°νλμ§ μμ΅λλ€.
@patrickbrouwers λμ κ°κΈ° μν΄ μ¬μ ν μ°λ¦¬κ° μλ‘λ₯Ό μ€ν΄νκ³ μλ€κ³ μκ°ν©λλ€. λ΄κ° μ°Ύκ³ μλ κ²μ λͺ¨λΈ 컬λ μ μ μ μ₯νμ§ μκ³ λ°ννλ λ©μλμ λλ€. 컨νΈλ‘€λ¬μ νμ μ²λ¦¬νκ³ μΆμ§ μμ΅λλ€. Import ν΄λμ€μμ μ²λ¦¬νκ³ μΆμ΅λλ€. μ§κΈκΉμ§ λλ μ΄κ²μ μ°Ύμ§ λͺ»νμ΅λλ€.
μμ΄λμ΄:
TransactionsImport.php :
<?php
namespace App\Imports;
use App\Banks\Transaction;
use Carbon\Carbon;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
class TransactionsImport implements ToModel, WithHeadingRow
{
public function model(array $row)
{
$transaction = new Transaction;
$transaction->amount = $row['amount'];
$transaction->currency = $row['currency'];
return $transaction;
}
}
TransactionsController.php :
...
$transactions = Excel::someFunction(new TransactionsImport, 'path/to/file.csv');
// $transactions is a Collection of Transaction models that are not saved to the database yet.
...
λν toCollection
ν¨μμμ λ κ°μ§ λ¬Έμ λ₯Ό λ°κ²¬νμ΅λλ€.
λ΄κ° μ°Ύκ³ μλ κ²μ λͺ¨λΈ 컬λ μ μ μ μ₯νμ§ μκ³ λ°ννλ λ©μλμ λλ€. 컨νΈλ‘€λ¬μ νμ μ²λ¦¬νκ³ μΆμ§ μμ΅λλ€. Import ν΄λμ€μμ μ²λ¦¬νκ³ μΆμ΅λλ€. μ§κΈκΉμ§ λλ μ΄κ²μ μ°Ύμ§ λͺ»νμ΅λλ€.
λ€μ λ¬Έμκ° λμμ΄ λ κ²μ
λλ€.
μ€μ€λ‘ μ§μμ± μ²λ¦¬
μν€ν
μ² κ°λ
@WouterFlorijn νμΌμμ λ°°μ΄μ κ°μ Έ μ€κΈ° μν΄μ΄ λ°©λ²μ μλ ν μ μμ΅λλ€.
$array = Excel::toArray([], 'file.xlsx');
@WouterFlorijn νμΌμμ λ°°μ΄μ κ°μ Έ μ€κΈ° μν΄μ΄ λ°©λ²μ μλ ν μ μμ΅λλ€.
$array = Excel::toArray([], 'file.xlsx');
κ·Έκ²μ΄ λ°λ‘ μ κ° μ°Ύλ κ²μ λλ€.
μ΄ μμ²μ +1. model () λ° collection () λ©μλκ° μ무κ²λ μ μ₯νμ§ μμμΌνλ€κ³ μκ°ν©λλ€. Excel / CSV νμΌμ λ°μ΄ν°λ₯Ό λͺ¨λΈ / λ°°μ΄μ 컬λ μ (λλ λ°°μ΄)μΌλ‘ λ°νν΄μΌν©λλ€. μ§μμ±μ λ³λλ‘ μ²λ¦¬νκ±°λ μ μ΄λ μ νν΄μΌν©λλ€.
λ΄ μ¬μ© μ¬λ‘ : CSVμ λ μ½λμμ μ΅μ λ° μ΅λ λ μ§λ₯Ό κ°μ Έμ€κ³ μΆμ΅λλ€. μ΄κ²μ΄ κΈ°μ‘΄μ κ°μ Έμ¨ CSVμ κ²ΉμΉλ κ²½μ° μ¬μ©μκ° κ²ΉμΉ¨μ΄ μ¬λ°λ₯Έμ§ νμΈνκΈ° μ μ μ무κ²λ κ°μ Έ μ€μ§ μμμΌν©λλ€.
νΈμ§ : μ, λ«ν λ¬Έμ μ μλ΅νκ³ μμ΅λλ€. μ΄ @WouterFlorijnμ μ΄λ»κ² μ²λ¦¬ νμ΅λκΉ?
κ°μ Έ μ€κΈ° ν΄λμ€ λ΄λΆμ μνλ₯Ό μ μ§νμ¬ μ΄λ―Έ μ½κ²μ΄ μμ
μ μν ν μ μμ΅λλ€. toModels
λ©μλλ₯Ό νΈλ μ΄ νΈ μμ λννκ³ λͺ¨λ λ΄λ³΄λ΄κΈ°μμ λ€μ μ¬μ©ν μ μμ΅λλ€.
new UsersImport implements ToModel, WithHeadingRow
{
use Importable;
protected array $models;
public function model(array $row)
{
$this->models[] = new User($row);
}
public toModels(string $filename): array
{
$this->import($filename);
return $this->models;
}
}
$nonPersistedUsers = (new UsersImport)->toModels('users.xlsx');
κ°μ₯ μ μ©ν λκΈ
@WouterFlorijn νμΌμμ λ°°μ΄μ κ°μ Έ μ€κΈ° μν΄μ΄ λ°©λ²μ μλ ν μ μμ΅λλ€.
$array = Excel::toArray([], 'file.xlsx');