Powerful visual editor for Laravel Eloquent
Edit and export Laravel Eloquent definitions just in a few clicks.
Speed up your work and avoid routine.



1. Visually edit your project model.
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class Migrations20190306091702 extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('ecommerce_orders', function (Blueprint $table) {
$table->integer('id')->autoIncrement()->nullable(true);
$table->integer('ecommerce_order_state_id')->nullable(true);
$table->integer('contact_id')->nullable(true);
$table->integer('delivery_address_id')->nullable(true);
$table->integer('billing_address_id')->nullable(true)->unique();
$table->timestamp('ordered_at')->nullable(true);
$table->string('customer_note')->nullable(true);
$table->string('internal_note')->nullable(true);
});
Schema::create('ecommerce_order_simple_items', function (Blueprint $table) {
$table->integer('id')->autoIncrement()->nullable(true);
$table->integer('ecommerce_order_id');
$table->string('name',255);
$table->float('quantity')->nullable(true);
});
Schema::create('ecommerce_order_items', function (Blueprint $table) {
$table->integer('id')->autoIncrement()->nullable(true);
$table->integer('ecommerce_order_id');
$table->integer('product_id');
$table->float('quantity')->nullable(true);
});
Schema::table('ecommerce_order_items', function (Blueprint $table) {
$table->foreign('ecommerce_order_id')->references('id')->on('ecommerce_orders');
});
Schema::table('ecommerce_order_simple_items', function (Blueprint $table) {
$table->foreign('ecommerce_order_id')->references('id')->on('ecommerce_orders');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('ecommerce_order_simple_items', function (Blueprint $table) {
$table->dropForeign(['ecommerce_order_id']);
});
Schema::table('ecommerce_order_items', function (Blueprint $table) {
$table->dropForeign(['ecommerce_order_id']);
});
Schema::dropIfExists('ecommerce_orders');
Schema::dropIfExists('ecommerce_order_simple_items');
Schema::dropIfExists('ecommerce_order_items');
}
}<?php
namespace App\Models\Base;
use Illuminate\Database\Eloquent\Model;
class EcommerceOrder extends Model
{
/**
* Do not automatically manage timestamps by Eloquent
*
* @var bool
*/
protected $timestamps=false;
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts=[
'id'=>'integer',
'ecommerce_order_state_id'=>'integer',
'contact_id'=>'integer',
'delivery_address_id'=>'integer',
'billing_address_id'=>'integer',
'ordered_at'=>'datetime',
'customer_note'=>'string',
'internal_note'=>'string'
];
/**
* The guarded property should contain an array of attributes that you do not want to be mass assignable.
*
* @var array
*/
protected $is_guarded=['internal_note'];
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $is_fillable=[
'id',
'ecommerce_order_state_id',
'contact_id',
'delivery_address_id',
'billing_address_id',
'ordered_at',
'customer_note'
];
public function Contact()
{
return $this->belongsTo('\App\Models\Contact','contact_id','id');
}
public function DeliveryAddress()
{
return $this->belongsTo('\App\Models\Address','delivery_address_id','id');
}
public function BillingAddress()
{
return $this->belongsTo('\App\Models\Address','billing_address_id','id');
}
public function OrderItem()
{
return $this->hasMany('\App\Models\EcommerceOrderItem','ecommerce_order_id','id');
}
public function OrderSimpleItem()
{
return $this->hasMany('\App\Models\EcommerceOrderSimpleItem','ecommerce_order_id','id');
}
}<?php
namespace App\Models;
class EcommerceOrder extends \App\Models\Base\EcommerceOrder
{
}2. Export it to complete definition files.
Download 14-day trial version
Try Skipper for free No credit card needed.
Why use Skipper
Simple Project import
Sophisticated import wizard allows you to import your existing Laravel Eloquent projects from the database in just a few clicks. The created visual model shows you complete project logic simply and quickly.
Definitions exported by one click
You can export your Laravel Eloquent project repeatedly and as many times as you need. Exported definitions are in a standardized and ready-to-use format without a need for further editing.
Editing in visual interface
Intuitive wizards and dialogs guide you through editing of all objects. Each change in a model is properly transferred to the definition files in the moment of their export.
Lower need of Laravel Eloquent skills
Thanks to Skipper inbuilt value advisors, validators, assistants and definitions created via standardized templates you can stop worrying about Laravel Eloquent syntax and keywords.
See all the features
Support for all Laravel Eloquent features
Supported formats
Migrations and base objects are continuously updated during every export. Derived model object is one-time exported and prepared for your customization.
Entities and modules
Create entities, change their fields and ORM properties or simply remove them from the model. Use colors to create logical units and make orientation in the model easier.
Associations
With smart wizards you can create all types of Laravel Eloquent associations (both classic and polymorphic). Use association tools and define owner and inverse entity or MN entity and aliases.
Indexes
Create indexes and manage them with the help of intuitive Entity Editor. Specify all indexes you need and which fields are indexed by them.
Eloquent Models
Model can be exported as single application to the "app" directory or can be split to several modules as standalone "packages".
Database Migrations
Create, update or configure migrations with one click directly from the Skipper application.
ORM Properties
Alter all model properties as you need. Skipper unique Property Editor provides a quick and easy way to create, edit or delete any value.
Customization
Implement your own customizations to Skipper so it fully fits your needs. Create new behaviors, configure custom properties or datatypes or connect Skipper with external tools.
See all the features
Over 5,000 companies use Skipper every day
“

We have good use of the tool. It simplifies our daily work, saves us time and is simple and intuitive to use.
Thomas Somoen, Try/Apt
”
“

It is faster and gives less errors to have Skipper create the mapping code instead of writing it myself. Later in the development process I often use the Skipper diagram as a quick reference.
Herman Peeren, Yepr
”
Detailed List of supported Laravel Eloquent ORM properties
Skipper model properties
| Object | Property |
|---|---|
| Project | name, storage path, description |
| Module | name, namespace, description, external plugin storage, export path and format |
| Entity | name, namespace, description |
| Field | name, type, size, required, unique, primary key, auto increment, default value, enum values, description |
| Association | owner/inverse entity, reference fields, owner/inverse alias, association type (one-to-one, one-to-many), classic/polymorphic, parent requirement, description |
| Many to Many | mn entity, owner/inverse entity, reference fields, owner/inverse alias, classic/polymorphic, description |
| Index | name, unique, indexed fields, description |
Laravel Eloquent model properties
| Object | Property |
|---|---|
| Project | - |
| Module | migrations enabled/disabled, migrations-path, migrations-generate-fk-names, models enabled/disabled |
| Entity | Behaviors, charset, collation, connection, dateFormat, engine, extends, fillableAll, table, temporary, timestampCreatedAt, timestampUpdatedAt, model-disabled |
| Field | always, castFormat, charset, collation, comment, decimal, generatedAs, isFillable, isGuarded, scale, storedAs, useCurrent, visualAs |
| Association | onDelete, onUpdate |
| Many to Many | pivotAttribute |
Laravel Eloquent datatypes support
char
lineString
longText
mediumText
multiLineString
string
text
uuid
macAddress
ipAddress
json
jsonb
integer
bigInteger
smallInteger
tinyInteger
mediumInteger
decimal
double
float
date
dateTime
dateTimeTz
time
timeTz
timestamp
timestampTz
year
binary
boolean
enum
geometry
geometryCollection
multiPoint
multiPolygon
point
polygon
Laravel Eloquent associations support
One to one (one-to-one)
One to many (one-to-many)
Many to one (many-to-one)
Many to many (many-to-many)
Laravel Eloquent model import / export formats
Migration definitions
Single / multi module (packages) export support
Model objects base classes
Model objects derived classes