astritzeqiri / laravel-metadata
为laravel模型添加元数据
1.0.8
2017-03-04 12:55 UTC
Requires
- php: >=5.4.0
- laravel/framework: 5.*
README
为laravel模型添加元数据
要求
- PHP >=5.4
- Laravel >= 5.0
安装
将laravel-metadata添加到您的composer.json文件中
"require": { "astritzeqiri/laravel-metadata": "~1.0" }
让composer安装此包
$ composer require astritzeqiri/laravel-metadata
注册包
在app/config/app.php
文件中的providers
数组中注册服务提供者
'providers' => array( // ... AstritZeqiri\Metadata\LaravelMetaDataServiceProvider::class )
如果您想的话,可以在app/config/app.php
文件中的aliases
数组中为MetaData模型添加别名
'aliases' => array( // ... 'MetaData' => AstritZeqiri\Metadata\Models\MetaDada::class, )
然后您需要发布迁移文件
$ php artisan vendor:publish --provider="AstritZeqiri\Metadata\LaravelMetaDataServiceProvider"
然后运行迁移
$ php artisan migrate
使用方法
基本示例
首先您需要访问您的模型并使用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();
按meta_data过滤用户
// 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'