ironshark/laravel-extendable

Traits for Laravel to add and manage custom Eloquent model fields.

v1.0.10 2016-07-12 11:54 UTC

README

License Downloads Version-stable

How to install

Composer Install

composer require ironshark/laravel-extendable

Laravel Service Provider

Add service provider in app/config/app.php

'providers' => [
    IronShark\Extendable\ExtendableServiceProvider::class,
];

Publish configs, templates and run migrations.

php artisan vendor:publish --provider="IronShark\Extendable\ExtendableServiceProvider"
php artisan migrate

Usage

Add traits

Add model trait to models, where you want to use custom fields.

class Article extends \Illuminate\Database\Eloquent\Model {
    use IronShark\Extendable\ModelTrait;
}

Config fields

Use app/config/custom-fields.php to configure your fields.

return [
    'App\Room' => [                                                     // model name
        'light' => [                                                    // field name
            'title' => 'Light',                                         // field title (can be used in views)
            'type' => \IronShark\Extendable\CustomFieldType::Radio,     // field type
            'options' => [                                              // possible values/labels
                0 => 'Off',
                1 => 'On'
            ],
            'default' => 1                                              // default value
        ]
    ]
];

Assign/retrieve customfield values

Assign custom field values as regular values.

$data = [
    'title' => 'Awesome Article!!!', // regular field
    'recomended' => 1                // custom filed     
];

$article = new Article();
$article->fill($data);
$article->save();

Retrieve custom field values.

$article = Article::find(1);
$article->recomended->value; // 1
echo $article->recomended;   // 1

Field types

FieldType DB DataType Example
CustomFieldType::String VARCHAR(255) Lorem
CustomFieldType::Text TEXT Lorem Ipsum...
CustomFieldType::Select VARCHAR(255) en_us
CustomFieldType::Radio VARCHAR(255) off
CustomFieldType::Checkbox VARCHAR(255) 0
CustomFieldType::DateTime TIMESTAMP 2015-01-19 03:14:07