phoenix / eloquent-meta
将元数据附加到 Eloquent 模型
Requires
- php: >=5.6.4
- illuminate/database: 5.4.*|5.5.*|5.6.*|5.7.*
Requires (Dev)
- phpunit/phpunit: 4.4.*
This package is not auto-updated.
Last update: 2024-09-23 06:13:44 UTC
README
该包可能已被放弃。它可能无法与新版本的 Laravel 兼容。我已经转向使用 Laravel 和 PHP。所有提交的 PR 都将被接受。如果您想拥有这个仓库,请创建一个 issue 并与我联系。
Phoenix Eloquent Meta
将元数据附加到 Laravel 的 Eloquent 模型。
- 可选地为每个模型创建单独的表
- 与或不使用 Laravel 一起使用
- 包含 Laravel 迁移或模式说明
- 获取元数据或回退
哪个版本?
- Laravel 5.7 - 使用
1.9.*
- 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.6
和 7
+。
如果您使用 EloquentMeta 和 Eloquent 而不使用 Laravel,您还必须根据其 文档 详细设置 Eloquent。
如果您 使用 Laravel,则希望包含将注册命令等的 ServiceProvider。更新 config/app.php
以将此包的 ServiceProvider 包含在 providers 数组中。
'providers' => [ 'Phoenix\EloquentMeta\ServiceProvider' ]
表结构
如果您使用 Laravel,请运行迁移 php artisan vendor:publish
和 php 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 中包含 ServiceProvider
'providers' => [ 'Phoenix\EloquentMeta\ServiceProvider' ]
然后运行 php artisan generate:metatable table_name
以创建迁移并运行 php artisan migrate
以构建表。
贡献
有关更多信息以及测试,请参阅 [CONTRIBUTING.md]。
感谢和致谢
贡献者
- Michael Wilson - @chrismichaels84 - 维护者
- Paweł Ciesielski - @dzafel
- Lukas Knuth - @LukasKnuth
- @stephandesouza
非常感谢Boris Glumpler和ScubaClick提供的原始包!