InfluxOW/laravel_ddd_ecommerce

View on GitHub
app/Domains/Common/Traits/Models/HasExtendedFunctionality.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

namespace App\Domains\Common\Traits\Models;

use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Schema;

trait HasExtendedFunctionality
{
    public function getRawAttributes(array $except = []): array
    {
        $attributes = [];
        foreach ($this->getColumns() as $column) {
            if (in_array($column, $except, true)) {
                continue;
            }

            $attributes[$column] = $this->attributes[$column];
        }

        return $attributes;
    }

    public function getColumns(): array
    {
        $table = $this->getTable();

        return Cache::rememberInArray("{$table}_columns", static fn (): array => Schema::getColumnListing($table));
    }
}