<?php /** * Import from files */ namespace App\Traits; use Illuminate\Support\Collection; trait Import { protected Collection $_columns; /** * Return the columns from the file that we'll work with. * This creates an index of the position of each header in the file, which we use to find an value by getColumnKey() * * @param string $line * @return Collection * @throws \Exception */ private function setColumns(string $line): Collection { // If columns is not set, then this is an error if (! $this->columns) throw new \Exception('ERROR: Columns must be set before calling setColumns()'); $this->_columns = collect(explode(',',strtolower($line)))->filter(); return $this->_columns->intersect($this->columns); } /** * Get the index for the column in the file * * @param string $key * @return mixed */ private function getColumnKey(string $key) { return $this->_columns->search($this->columns->get($key)); } }