jlopezcur / metable
Access model meta data as if it was a property on your model (Fork based on the work of https://github.com/Azirius/hasmeta) for Laravel 5
Requires
- php: >=5.3.0
- illuminate/support: ~5.0
This package is not auto-updated.
Last update: 2024-12-21 19:31:48 UTC
README
A Laravel trait to access model meta data as if it was a property on your model (Fork based on the work of https://github.com/Azirius/hasmeta) for Laravel 5
Installation
Run composer require jlopezcur/metable 0.1.*
or add "jlopezcur/metable": "0.1.*"
to your composer.json
file
In the Model that you want to utilise Metable
add the following properties
use Jlopezcur\Metable\MetableTrait; protected $meta_model = 'ModelName'; // the name of your meta data model protected $meta_foreign_key = 'user_id'; // the foreign key of your main model protected $meta_primary_key = 'meta_id'; // the primary key of you meta data model protected $meta_key_name = 'dataName'; // the column name that stores your meta data key name protected $meta_value_name = 'dataValue'; // the column name that stores your meta data value
Real World Example
Nothing like a simple example to explain things
Setup
users
table
users_meta
table
User.php
model
class User extends Eloquent { use Jlopezcur\Metable\MetableTrait; protected $meta_model = 'UserMeta'; protected $meta_foreign_key = 'user_id'; protected $meta_primary_key = 'id'; protected $meta_key_name = 'meta_name'; protected $meta_value_name = 'meta_value'; /** * The database table used by the model. * * @var string */ protected $table = 'users'; /** * The primary key on the table * * @var string */ protected $primaryKey = 'id'; // ... }
UserMeta.php
model
class UserMeta extends Eloquent { /** * The database table used by the model. * * @var string */ protected $table = 'users_meta'; /** * The primary key on the table * * @var string */ protected $primaryKey = 'id'; // ... }
Usage
Now we can simply do this for getting meta data...
$user = User::find(1); echo $user->gender; // Will output 'Male'
We can save meta data easily too...
$user = User::find(1); $user->gender = 'Female'; $user->save();
Delete meta...
$user = User::find(1); $user->gender = null; $user->save();
New meta...
$user = User::find(1); $user->anything_you_want = 'some lovely value'; $user->save();
Mass assignment...
$user = User::find(1); $user->fill($request->input())->save(); $user->save();
For mass assignment Remember add in your model...
protected $guarded = array();