* @mixin \Illuminate\Database\Eloquent\Builder */ trait Excludable { /** * Get the array of columns * * @return mixed */ private function getTableColumns() { /** @var Schema|\App\Models\BaseModel $this */ return $this->getConnection()->getSchemaBuilder()->getColumnListing($this->getTable()); } /** * Exclude an array of elements from the result. * * @method static \Illuminate\Database\Eloquent\Builder exclude($columns) * @method static \Illuminate\Database\Eloquent\Builder exclude($columns) * * @param \Illuminate\Database\Eloquent\Builder $query * @param array $columns * * @return \Illuminate\Database\Eloquent\Builder */ public function scopeExclude($query, $columns): \Illuminate\Database\Eloquent\Builder { /** @var \Illuminate\Database\Eloquent\Builder|static $query */ return $query->select(array_diff($this->getTableColumns(), (array) $columns)); } }