Skip to content

laragen/laragen

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Laragen

A powerful yet lightweight generator for Laravel 5.4 and php7

Installation

  1. Install via composer.

    composer require laragen/laragen --dev
  2. Add LaragenServiceProvider to app/Providers/AppServiceProvider.php.

    if ($this->app->environment('local')) {    
        $this->app->register(\Laragen\Laragen\LaragenServiceProvider::class);
    }
  3. Publish config files.

    php artisan vendor:publish --tag=laragen.config

Quick Look

```bash
php artisan laragen:model User
php artisan laragen:model --all

php artisan laragen:api User
php artisan laragen:api User --model --actions=index,view

php artisan laragen:channel Sms
php artisan laragen:channel Sms --message=mobile,content
php artisan laragen:message Sms
php artisan laragen:message Sms --attributes=mobie,content
```

Config

return [
    'model' => [
        'path' => 'Models', // path after `app/`
        'soft_delete' => true, //add deleted_at for $dates
        'traits' => [], // traits for model
        'parent_class' => 'Illuminate\Database\Eloquent\Model',
        'ignore_admin_tables' => true, //ignore admin tables generated by laravel-admin plugin
        'ignore_tables' => ['jobs', 'migrations', 'notifications'], //ignore system tables
        'morph_many' => [ //see https://laravel.com/docs/5.4/eloquent-relationships# polymorphic-relations
            'Comment' => ['News', 'Post'],
            'Like' => ['News', 'Post'],
        ],

    ],
    'api' => [
        'path' => 'Api', // path after `app/Controllers/`
        'version' => 1, // real path is `app/Controllers/{path}/V{version}`
        'parent_class' => 'App\Http\Controllers\Controller',
    ],
];

Sample Output

  1. Generate Eloquent Model Class.
    <?php
    namespace App\Models;
    
    use Illuminate\Database\Eloquent\Model;
    use Illuminate\Database\Eloquent\Relations\BelongsTo;
    use Illuminate\Database\Eloquent\Relations\BelongsToMany;
    use Illuminate\Database\Eloquent\Relations\HasMany;
    use Illuminate\Database\Eloquent\Relations\MorphMany;
    use Illuminate\Database\Eloquent\Relations\MorphTo;
    use Illuminate\Database\Eloquent\SoftDeletes;
    use Illuminate\Notifications\Notifiable;
    
    class Comment extends Model
    {
        use SoftDeletes;
    
        public $fillable = ['user_id', 'content', 'commentable_id', 'commentable_type'];
    
        public $casts = [];
    
        public $appends = [];
    
        public $dates = ['deleted_at'];
    
    
        /**
         * Get user
         * @return BelongsTo
         */
        public function user(): BelongsTo
        {
            return $this->belongsTo(User::class);
        }
    
    
        /**
         * Get commentable model
         * @return MorphTo
         */
        public function commentable(): MorphTo
        {
            return $this->morphTo();
        }
    
    }

Any issue or pull request is appreciated :)