Laravel Packages

Generate Eloquent Models from Database Markup Language Files

Published
Generate Eloquent Models from Database Markup Language Files image

The DBML to Laravel package generates Eloquent models and migrations directly from DBML diagrams with fillable properties, defined relationships, and more. DBML files can also be visualized as database diagrams, doubling your database schema as documentation to help developers familiarize themselves with an application's data model.

Simple DBML example of posts and users
Simple DBML example of posts and users

The DBML to Laravel package can speed up your development workflow and keep everyone in sync with a central database configuration tool. The following example from the package's readme illustrates how this package works, going from a .dbml file with generated models:

Table users {
id int [pk, increment]
name varchar
email varchar [unique]
password varchar
created_at datetime
updated_at datetime
}
 
Table posts {
id int [pk, increment]
user_id int [ref: > users.id]
title varchar
content text
created_at datetime
updated_at datetime
}
 
Ref: posts.user_id > users.id

Using the above DBML file and the provided generate:dbml command, here's an example of the Post.php model file:

namespace App\Models;
 
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
 
class Post extends Model
{
use HasFactory;
 
protected $fillable = [
'user_id',
'title',
'content',
];
 
public function user(): BelongsTo
{
return $this->belongsTo(User::class);
}
}

Main Features of the DBML to Laravel package

  • DBML to Laravel Models: Automatically generate Eloquent models with fillable properties, hidden attributes, and defined relationships (one-to-one, one-to-many, many-to-many).
  • DBML to Migration Files: Generate clean and accurate migration files with proper data types, nullability, default values, and foreign key constraints, directly from your DBML schema.
  • Customizable Stubs: Easily modify the default model and migration stubs to align with your project's coding style and specific requirements.
  • Relationship Parsing: Intelligently parses DBML relationships to create correct Eloquent relationship methods (e.g., hasMany, belongsTo, belongsToMany).
  • Casts Support: Automatically adds common Eloquent casts (e.g., JSON to arrays, timestamps to datetime objects) based on DBML column types.

You can learn more about this package, get full installation instructions, and view the source code on GitHub. Also, to familiarize yourself with the database markup language, check out the DBML documentation.

Paul Redmond photo

Staff writer at Laravel News. Full stack web developer and author.

Sponsored

serpapi logo
SerpApi

The Web Search API for Your LLM and AI Applications

Visit SerpApi

The latest

View all →
Fresh Package: Laravel Package Skeleton with Testbench, CI, and Boost Integration image

Fresh Package: Laravel Package Skeleton with Testbench, CI, and Boost Integration

Read article
Inertia DevTools Now Available for Firefox image

Inertia DevTools Now Available for Firefox

Read article
Laravel Scalpel Scans for Filesystem Intrusion Evidence image

Laravel Scalpel Scans for Filesystem Intrusion Evidence

Read article
Mercure Broadcasting in Laravel 13.32 image

Mercure Broadcasting in Laravel 13.32

Read article
Super Stack: Laravel Starter Kit With Filament and NativePHP image

Super Stack: Laravel Starter Kit With Filament and NativePHP

Read article
Laravel MCP 1.0 Is Released image

Laravel MCP 1.0 Is Released

Read article