briteweb/eloquent-meta

分支自:为Eloquent模型附加元数据

v1.8.0 2018-06-21 20:16 UTC

README

Latest Version Software License Build Status Total Downloads

将元数据附加到LaravelEloquent模型

  • 可选为每个模型创建单独的表
  • 与或不与Laravel一起使用
  • 包含Laravel迁移或模式说明
  • 获取元数据或回退
哪个版本?
  • Laravel 5.6 - 使用 1.8.*
  • Laravel 5.5 - 使用 1.7.*
  • Laravel 5.4 - 使用 1.6.*
  • Laravel 5.3 - 使用 1.5.*
  • 低于5.3 - 技术上不受支持,但应与 .1.3 兼容
  • Laravel 4 - 同样不受支持,但应与 1.2 兼容
稳定版本:1.4.* 与 Laravel 5.* 或独立使用兼容。自动拉取Eloquent。

要用于Laravel 4,请查看版本 1.2.*

安装

通过Composer安装。

"require": {
    "phoenix/eloquent-meta": "1.6.*"
}

请注意,仅支持php 5.67+。

如果您使用EloquentMeta和Eloquent 而不使用Laravel,您还需要根据其文档中的说明设置Eloquent。

如果您 使用Laravel,那么您可能需要包括将注册命令等的ServiceProvider。更新config/app.php以在提供者数组中包含此包的提供者引用。

'providers' => [
    'Phoenix\EloquentMeta\ServiceProvider'
]

表结构

如果您使用Laravel,运行迁移php artisan vendor:publishphp artisan migrate来创建数据库表。

如果您 不使用Laravel,则必须手动创建表。

CREATE TABLE meta
(
    id INTEGER PRIMARY KEY NOT NULL,
    metable_id INTEGER NOT NULL,
    metable_type TEXT NOT NULL,
    key TEXT NOT NULL,
    value TEXT NOT NULL
);
CREATE UNIQUE INDEX meta_key_index ON meta (key);
CREATE UNIQUE INDEX meta_metable_id_index ON meta (metable_id);

用法

将特性添加到您想附加元数据的所有模型中

use Illuminate\Database\Eloquent\Model;
use Phoenix\EloquentMeta\MetaTrait;

class SomeModel extends Model
{
    use MetaTrait;

    // model methods
}

然后像这样使用

$model = SomeModel::find(1);
$model->getAllMeta();
$model->getMeta('some_key', 'optional default value'); // default value only returned if no meta found.
$model->updateMeta('some_key', 'New Value');
$model->deleteMeta('some_key');
$model->deleteAllMeta();
$model->addMeta('new_key', ['First Value']);
$model->appendMeta('new_key', 'Second Value');

唯一的元数据模型和表

您也可以为特定的元数据类型定义一个特定的元数据模型。例如,您的User模型可以使用UserMeta模型,具有自定义方法和所有其他功能。使用上面的示例

use Illuminate\Database\Eloquent\Model;
use Phoenix\EloquentMeta\MetaTrait;

class SomeModel extends Model
{
    use MetaTrait;
    
    protected $meta_model = 'Fully\Namespaced\SomeModelMeta';

    // model methods
}

然后在SomeModelMeta中简单地扩展Phoenix\EloquentMeta\Meta。您现在可以向元数据模型添加自定义方法。您还可以通过添加来指定元数据保存到的表

protected $table = "whatever_table";

如果您独立于Laravel使用EloquentMeta,那么您将必须手动创建数据库表。

如果您使用Laravel,则必须在您的config/app.php中包含服务提供者

'providers' => [
    'Phoenix\EloquentMeta\ServiceProvider'
]

然后运行php artisan generate:metatable table_name来创建迁移并运行php artisan migrate来构建表。

贡献

请参阅[CONTRIBUTING.md]获取更多信息以及测试。

感谢和致谢

贡献者

非常感谢Boris GlumplerScubaClick为原始包做出贡献!