public function toCsv() { $writer = new Writer(); $writer->create(); $data = $this->toArray(); $writer->writeLine(array_keys($data)); $writer->writeLine($data); $out = $writer->flush(); $writer->close(); return $out; }
public function testWriteLine() { $writer = new Writer(); $writer->create(vfsStream::url('files/file2.csv'), ',', '"', '\\'); $writer->writeLine(['cell1', 'cell2']); $writer->close(); $content = file_get_contents(vfsStream::url('files/file2.csv')); $this->assertEquals('cell1,cell2' . PHP_EOL, $content); }
public function toCsv($setHeader = true) { $writer = new Writer(); $writer->create(); $data = $this->toArray(); if (is_array(array_values($data)[0])) { if ($setHeader) { $writer->writeLine(array_keys($data[0])); } $writer->writeAll($data); } else { if ($setHeader) { $writer->writeLine(array_keys($data)); } $writer->writeLine($data); } $out = $writer->flush(); $writer->close(); return $out; }
public function testFromCsvUpdate() { $userData = ['id' => 1, 'name' => 'abc', 'email' => '*****@*****.**', 'password' => 'pass']; $writer = new Writer(); $writer->create($this->vfsRoot->getChild('file2.csv')->url()); $writer->writeLine(array_keys($userData)); $writer->writeLine($userData); $writer->close(); $model = new class extends Model { use CsvImportable; protected $table = 'users'; protected $fillable = ['name', 'email', 'password']; }; $model->name = 'test'; $model->email = '*****@*****.**'; $model->password = '******'; $model->save(); $model->fromCsv($this->vfsRoot->getChild('file2.csv')->url()); $item = $model->first(); $this->assertEquals($userData['name'], $item->name); $this->assertEquals($userData['email'], $item->email); $this->assertEquals($userData['password'], $item->password); }