astritzeqiri/laravel-metadata

为laravel模型添加元数据

1.0.8 2017-03-04 12:55 UTC

This package is not auto-updated.

Last update: 2024-09-14 19:36:44 UTC


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'

许可证

MIT