atlas/info
Atlas.Info discovers and exposes database schema information using an Atlas.Pdo Connection. Inspect tables, columns, indexes, and other metadata programmatically to support migrations, tooling, and code generation. Documentation: http://atlasphp.io/cassini/info/
DB facade.Schema::getColumnListing() and raw information_schema queries.AtlasInfoServiceProvider).fetchAutoincSequence()) are PostgreSQL-only, and edge cases (e.g., MariaDB fixes in v1.2.1) may require custom handling.null for unsupported features).migrated) to invalidate cache on schema changes.Schema::getColumnListing())?Schema facade suffice with less overhead?information_schema) that’s simpler for the project’s needs?Schema facade: Simpler but less flexible (e.g., no column defaults or auto-increment sequences).information_schema).Schema::getColumnListing(), raw information_schema queries).// app/Providers/AtlasInfoServiceProvider.php
public function register()
{
$this->app->singleton(\Atlas\Info\Info::class, function ($app) {
$connection = new \Atlas\Pdo\Connection(
config('database.connections.mysql.database'),
config('database.connections.mysql.username'),
config('database.connections.mysql.password'),
config('database.connections.mysql.host')
);
return \Atlas\Info\Info::new($connection);
});
}
// app/Facades/AtlasInfo.php
namespace App\Facades;
use Illuminate\Support\Facades\Facade;
class AtlasInfo extends Facade
{
protected static function getFacadeAccessor() { return 'atlas.info'; }
}
Register the facade in config/app.php:
'aliases' => [
'AtlasInfo' => App\Facades\AtlasInfo::class,
],
Atlas.Info methods (e.g., AtlasInfo::fetchColumns('users')).$columns = AtlasInfo::fetchColumns('users');
foreach ($columns as $name => $def) {
// Generate form fields based on column metadata
}
options field).DB facade:
// app/Services/AtlasInfoWrapper.php
public function fetchColumns(string $table): array
{
$query = DB::select("SHOW COLUMNS FROM `$table`");
// Transform raw PDO results into Atlas.Info format
return $this->transformColumns($query);
}
// app/Services/CachedAtlasInfo.php
public function fetchColumns(string $table): array
{
return Cache::remember("atlas.info.columns.$table", now()->addHours(1), function () use ($table) {
return $this->info->fetchColumns($table);
});
}
How can I help you explore Laravel packages today?