collection()) { $this->type = 'Resource collection'; } parent::handle(); } protected function buildClass($name) { $db_name = DB::connection()->getDatabaseName(); $table_name = env('DB_PREFIX') . Str::snake(str_replace($this->getNamespace($name).'\\', '', $name) . 'T'); $properties = ''; $columns = DB::select("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = '{$db_name}' AND TABLE_NAME = '{$table_name}'"); foreach ($columns as $column){ $properties .= ' \''. $column->COLUMN_NAME . '\' => $this->' . $column->COLUMN_NAME . ',' . PHP_EOL; } $replace = [ '{{ propertiesList }}' => Str::replaceLast(PHP_EOL, '', $properties), ]; return str_replace( array_keys($replace), array_values($replace), parent::buildClass($name) ); return str_replace( array_keys($replace), array_values($replace), parent::buildClass($name) ); } /** * Get the stub file for the generator. * * @return string */ protected function getStub() { return $this->resolveStubPath('/stubs/resource.stub'); } /** * Determine if the command is generating a resource collection. * * @return bool */ protected function collection() { return $this->option('collection') || Str::endsWith($this->argument('name'), 'Collection'); } /** * Resolve the fully-qualified path to the stub. * * @param string $stub * @return string */ protected function resolveStubPath($stub) { return file_exists($customPath = $this->laravel->basePath(trim($stub, '/'))) ? $customPath : __DIR__.$stub; } /** * Get the default namespace for the class. * * @param string $rootNamespace * @return string */ protected function getDefaultNamespace($rootNamespace) { return $rootNamespace.'\Http\Resources'; } /** * Get the console command options. * * @return array */ protected function getOptions() { return [ ['collection', 'c', InputOption::VALUE_NONE, 'Create a resource collection'], ]; } }