/** * To get all columns on caching * * @param \Illuminate\Database\Eloquent\Model $model * @return array */ protected function getColumnsOnCache(Model $model) { /** * In normal scenario tables and columns often is not changed. * Therefore every time it is not need to access the database for knowing * columns name. We don't want make preoccupy/busy to the database. */ $fullKey = $this->getFullName($model); return $this->cache->remember($fullKey, $this->getRememberTime(), function () use($model) { return $this->builder->getColumnListing($model->getTable()); }); }
/** * POST and PUT requests must contain all attributes. * This method returns all fillable attributes which are missing. * * @param Model $model * @return array */ protected function getMissingUpdateAttributes(Model $model) { $keys = array_keys($this->body->getArray()); $columnNames = $this->schemaBuilder->getColumnListing($model->getTable()); $attributes = []; foreach ($columnNames as $column) { if ($model->isFillable($column) && !in_array($column, $keys)) { $attributes[] = $column; } } return $attributes; }
/** * Get the column listing for a given table. * * @param string $table * @return array * @static */ public static function getColumnListing($table) { return \Illuminate\Database\Schema\Builder::getColumnListing($table); }
/** * Get the column listing for a given table. * * @param string $table * * @return array */ public function getColumnListing($table) { return static::$schema->getColumnListing($table); }