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

masteringlaravel logo
Laravel Code Review

Get expert guidance in a few days with a Laravel code review

Visit Laravel Code Review

The latest

View all →
Laravel Starter Kits Now Ship with Vite+ image

Laravel Starter Kits Now Ship with Vite+

Read article
Pessimistic Locking in Laravel Eloquent with refreshForUpdate() image

Pessimistic Locking in Laravel Eloquent with refreshForUpdate()

Read article
Mask Query Bindings in Laravel Exception Messages image

Mask Query Bindings in Laravel Exception Messages

Read article
whereBinary(): Case-Sensitive MySQL Queries in Laravel image

whereBinary(): Case-Sensitive MySQL Queries in Laravel

Read article
Compile PHP to Native Binaries with TypePHP image

Compile PHP to Native Binaries with TypePHP

Read article
State of Laravel 2026 Survey Is Now Open image

State of Laravel 2026 Survey Is Now Open

Read article