Laragen
A powerful yet lightweight generator for Laravel 5.4 and php7
Installation
-
Install via composer., (*1)
composer require laragen/laragen --dev
-
Add LaragenServiceProvider to app/Providers/AppServiceProvider.php., (*2)
if ($this->app->environment('local')) {
$this->app->register(\Laragen\Laragen\LaragenServiceProvider::class);
}
-
Publish config files., (*3)
bash
php artisan vendor:publish --tag=laragen.config, (*4)
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
```php
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'],
],, (*5)
],
'api' => [
'path' => 'Api', // path after `app/Controllers/`
'version' => 1, // real path is `app/Controllers/{path}/V{version}`
'parent_class' => 'App\Http\Controllers\Controller',
],
];
```, (*6)
Sample Output
-
Generate Eloquent Model Class., (*7)
<?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 :)