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.
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.