Powerful visual editor for Laravel Eloquent

Edit and export Laravel Eloquent definitions just in a few clicks.

Speed up your work and avoid routine.

Entity
Module
Project
Skipper diagram - entitySkipper diagram - moduleSkipper diagram - project

1. Visually edit your project model.

Migrations
Base Model
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.


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.

Skipper file menuSkipper Laravel import wizardSkipper Laravel import wizard - definition filesSkipper imported Laravel project

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.

Skipper Laravel export settingsSkipper Laravel export resultsLaravel migrations exported by SkipperLaravel base model class exported by Skipper

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.

Skipper entity editor for LaravelSkipper bundle editor for LaravelSkipper Association editor for Laravel

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.

Skipper Laravel property editorSkipper Laravel property editor - field propertiesSkipper editing Laravel fields

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.

Skipper Laravel migrations exportSkipper Laravel base model object exportSkipper Laravel derived model object export

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.

Skipper diagram of Laravel entitiesEditing Laravel fields in SkipperSkipper visual model of Laravel project

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.

Skipper Laravel Many-to-Many wizardSkipper Laravel Association wizardSkipper Laravel Many-to-Many editorSkipper Laravel Association editorSkipper Laravel polymorphic associations

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.

Skipper Laravel index editor

Eloquent Models

Model can be exported as single application to the "app" directory or can be split to several modules as standalone "packages".

Skipper Laravel property editor - custom export path

Database Migrations

Create, update or configure migrations with one click directly from the Skipper application.

Skipper Laravel migrations managementSkipper Laravel migrations management

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.

Skipper Laravel property editorSkipper Laravel property editor - associationSkipper Laravel property editor - field

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

Thomas Somoen, Try/Apt

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

Herman Peeren, Yepr

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

ObjectProperty
Projectname, storage path, description
Modulename, namespace, description, external plugin storage, export path and format
Entityname, namespace, description
Fieldname, type, size, required, unique, primary key, auto increment, default value, enum values, description
Associationowner/inverse entity, reference fields, owner/inverse alias, association type (one-to-one, one-to-many), classic/polymorphic, parent requirement, description
Many to Manymn entity, owner/inverse entity, reference fields, owner/inverse alias, classic/polymorphic, description
Indexname, unique, indexed fields, description

Laravel Eloquent model properties

ObjectProperty
Project-
Modulemigrations enabled/disabled, migrations-path, migrations-generate-fk-names, models enabled/disabled
EntityBehaviors, charset, collation, connection, dateFormat, engine, extends, fillableAll, table, temporary, timestampCreatedAt, timestampUpdatedAt, model-disabled
Fieldalways, castFormat, charset, collation, comment, decimal, generatedAs, isFillable, isGuarded, scale, storedAs, useCurrent, visualAs
AssociationonDelete, onUpdate
Many to ManypivotAttribute

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