Package Data | |
---|---|
Maintainer Username: | astritzeqiri |
Maintainer Contact: | astritzeqiri5@gmail.com (Astrit Zeqiri) |
Package Create Date: | 2016-07-27 |
Package Last Update: | 2017-08-09 |
Home Page: | |
Language: | PHP |
License: | MIT |
Last Refreshed: | 2024-11-22 03:15:19 |
Package Statistics | |
---|---|
Total Downloads: | 346 |
Monthly Downloads: | 2 |
Daily Downloads: | 0 |
Total Stars: | 4 |
Total Watchers: | 3 |
Total Forks: | 0 |
Total Open Issues: | 0 |
Add metadata to laravel models
Add laravel-metadata to your composer.json file:
"require": {
"astritzeqiri/laravel-metadata": "~1.0"
}
Get composer to install the package:
$ composer require astritzeqiri/laravel-metadata
Register the service provider within the providers
array found in app/config/app.php
:
'providers' => array(
// ...
AstritZeqiri\Metadata\LaravelMetaDataServiceProvider::class
)
If you want you can add an alias to the MetaData model within the aliases
array found in app/config/app.php
:
'aliases' => array(
// ...
'MetaData' => AstritZeqiri\Metadata\Models\MetaDada::class,
)
Then you need to publish the migration files:
$ php artisan vendor:publish --provider="AstritZeqiri\Metadata\LaravelMetaDataServiceProvider"
And then run the migration:
$ php artisan migrate
First you need to go to your model and use the HasManyMetaDataTrait:
// E.x. User.php
// add this before the class declaration
use AstritZeqiri\Metadata\Traits\HasManyMetaDataTrait;
// after the class declaration add this code snippet:
use HasManyMetaDataTrait;
// get the instance
$user = \App\User::first();
// update a metadata if it exists else add a new one
$user->update_meta("meta_key", "meta_value");
// get the instance
$user = \App\User::first();
// get a metadata object with a given key
$user->get_meta("meta_key");
// if the second parameter is true it returns only the value
$user->get_meta("meta_key", true);
// get the instance
$user = \App\User::first();
// delete a metadata entry with a given key
$user->delete_meta("meta_key");
// delete all metadatas of a user
$user->delete_all_metas();
// Search by only one meta data.
$users = \App\User::metaQuery('hair_color', 'red')->get();
// filter the users that have red hair color
// Search by many meta data.
$users = \App\User::metaQuery(array(
array('key' => 'hair_color', 'value' => 'red'),
array('key' => 'phone_number', 'value' => '%111%', 'compare' => "LIKE")
), "OR")->get();
// filter the users that have red hair color
// or that their phone_number contains '111'