Coder Social home page Coder Social logo

laravel-meta-attributes's Introduction

Laravel Meta Attributes

Latest Version on Packagist Total Downloads

Add meta attributes to Eloquent models

Installation

You can install the package via composer:

composer require nncodes/laravel-meta-attributes

You need to publish and run the migration:

php artisan vendor:publish --provider="Nncodes\MetaAttributes\MetaAttributesServiceProvider" --tag="migrations"
php artisan migrate

Preparing your model

To associate meta attributes with a model, the model must implement the following interface and trait:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Nncodes\MetaAttributes\Concerns\HasMetaAttributes;

class YourModel extends Model
{
    use HasMetaAttributes;
}

Usage

You can set meta attributes to your model like this:

$yourModel = YourModel::find(1);

/**
 * Store the meta value using type auto discover
 * 
 * @note types: boolean, integer, double, string, 
 * object, array, collection, date, datetime.
*/

$yourModel->setMeta($key)->value($value);

//For all other types you can specify using casting methods.

$yourModel->setMeta('departament')->asString('IT');

$yourModel->setMeta('salaryInteger')->asInteger(1489);

$yourModel->setMeta('salaryFloat')->asFloat(1489.909);

$yourModel->setMeta('salaryDecimal')->asDecimal(1489.9, $digitgs = 2);

$yourModel->setMeta('salaryDouble')->asDouble(1489.90);

$yourModel->setMeta('salaryPerSecond')->asReal(0.00001);

$yourModel->setMeta('favoriteColors')->asArray([
    'red', 'blue', 'yellow', 'white'
]);

$yourModel->setMeta('tastes')->asCollection([
	['name' => 'Coffee', 'type' => 'Beverage', 'rate' => 9],
  	['name' => 'Rice', 'type' => 'Food', 'rate' => 7],
]);

$yourModel->setMeta('skills')->asObject([
    'PHP' => 'Very Good', 
    'Laravel' => 'Very Good', 
    'MySQL' => 'Good'
]);

$yourModel->setMeta('isAdult')->asBoolean(true);

$yourModel->setMeta('nid')->asEncrypted('FL-104050'); 

$yourModel->setMeta('birthdate')->asDate(
    '1991-01-29', 
    $format = 'Y-m-d H:i:s'
);

$yourModel->setMeta('lastLoginAt')->asDatetime(
    '2020-01-01 10:10:10',
    $format = 'Y-m-d H:i:s'
);

$yourModel->setMeta('createdAt')->asTimestamp($timestamp = time());

And your can get a meta attribute from your model:

$yourModel->getMeta($key); //Eloquent object
$yourModel->getMetaValue($key, $fallback = null); //Only the value

To get the collection of meta attributes from your from:

$yourModel->getMetas();

Or you can access all meta attributes as an object:

$yourModel->meta->birthdate;
$yourModel->meta->createdAt;

You can also check if the model already has a meta attribute:

$yourModel->hasMeta($key);

If you need to delete the meta attribute, it is simple:

$yourModel->forgeMeta($key);

Credits

License

The MIT License (MIT). Please see License File for more information.

laravel-meta-attributes's People

Contributors

leopoletto avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.