asamaru7/eloquent-model-generator-for-lumen
Eloquent Model Generator for lumen
Eloquent Model Generator is a tool based on Code Generator for generating Eloquent models.
Installation
Step 1. Add Eloquent Model Generator to your project:
composer require asamaru7/eloquent-model-generator-for-lumen
Step 2. Register GeneratorServiceProvider:
$app->register(Krlove\EloquentModelGenerator\Provider\GeneratorServiceProvider::class);
Step 3. Configure your database connection.
Usage
Use
php artisan krlove:generate:model User
to generate a model class. Generator will look for table with name users and generate a model for it. You can specify another table name by supplying table-name option:
php artisan krlove:generate:model User --table-name=user
In this case generated model will contain protected $table = 'user' property.
Generated file will be saved into app directory of your application and have App namespace. If you want to change the destination and namespace, supply the output-path and namespace options respectively:
php artisan krlove:generate:model User --output-path=/full/path/to/output/directory --namespace=Some\\Other\\NSpace
By default generated class will be extended from Illuminate\Database\Eloquent\Model. To change the base class specify base-class-name option:
php artisan krlove:generate:model User --base-class-name=Some\\Other\\Base\\Model
There are several useful options for defining several model's properties:
no-timestamps- addspublic $timestamps = false;property to the modeldate-format- specifiesdateFormatproperty of the modelconnection- specifies connection name property of the model
Instead of spcifying options each time when executing the command you can create a config file with your own default values and pass it by specifying config option. Generator already contains its own config file at Resources/config.php:
<?php
return [
'namespace' => 'App',
'base_class_name' => \Illuminate\Database\Eloquent\Model::class,
'output_path' => null,
'no_timestamps' => null,
'date_format' => null,
'connection' => null,
];
Its values can be overrided by your own config (e.g. <your-base-dir>/config/eloquent_model_generator.php):
<?php
return [
'namespace' => 'Some\\Other\\Namespace',
'base_class_name' => 'Some\\Other\\ClassName',
'output_path' => '/full/path/to/output/directory',
'no_timestamps' => true,
'date_format' => 'U',
'connection' => 'other-connection',
];
php artisan krlove:generate:model User --config=<your-base-dir>/config/eloquent_model_generator.php
Usage example
Table user:
CREATE TABLE `user` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL,
`email` varchar(100) NOT NULL,
`role_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `role_id` (`role_id`),
CONSTRAINT `user_ibfk_1` FOREIGN KEY (`role_id`) REFERENCES `role` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8
Command:
php artisan krlove:generate:model User --table-name=user
Result:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
/**
* @property int $id
* @property int $role_id
* @property mixed $username
* @property mixed $email
* @property Role $role
* @property Article[] $articles
* @property Comment[] $comments
*/
class User extends Model
{
/**
* The table associated with the model.
*
* @var string
*/
protected $table = 'user';
/**
* @var array
*/
protected $fillable = ['role_id', 'username', 'email'];
/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function role()
{
return $this->belongsTo('Role');
}
/**
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function articles()
{
return $this->hasMany('Article');
}
/**
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function comments()
{
return $this->hasMany('Comment');
}
}
Related Packages
Powerful PHP database abstraction layer (DBAL) with many features for database s...
Laravel Serializable Closure provides an easy and secure way to serialize closur...
Cli error handling for console/command-line PHP applications.
Version History
| Version | Released | Laravel | License |
|---|---|---|---|
| 1.0.6 | MIT | ||
| 1.0.5 | MIT | ||
| 1.0.4 | MIT | ||
| 1.0.3 | MIT | ||
| 1.0.2 | MIT | ||
| 1.0.1 | MIT | ||
| 1.0.0 | ^5.0 | MIT |