vinhnguyen / eloquent-meta
将元数据附加到 Eloquent 模型
Requires
- php: >=5.6.4
- illuminate/database: 5.4.*|5.5.*|5.6.*|5.7.*|5.8.*
- illuminate/support: 5.4.*|5.5.*|5.6.*|5.7.*|5.8.*
- illuminate/translation: 5.4.*|5.5.*|5.6.*|5.7.*|5.8.*
- illuminate/validation: 5.4.*|5.5.*|5.6.*|5.7.*|5.8.*
- nesbot/carbon: 1.*
Requires (Dev)
- illuminate/console: 5.*
- illuminate/filesystem: 5.*
- phpunit/phpunit: 4.4.*
This package is auto-updated.
Last update: 2024-09-28 06:04:00 UTC
README
将元数据附加到 Laravel 的 Eloquent 模型。
- 可选地为每个模型创建一个单独的表
- 与或不与 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.6 和 7+。
如果您使用 EloquentMeta 和 Eloquent 而不使用 Laravel,您还必须根据其 文档 中的说明设置 Eloquent。
如果您 使用 Laravel,那么您可能想要包含将注册命令等的 ServiceProvider。更新 config/app.php 以在 providers 数组中包含此包的 ServiceProvider。
'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,则将 ServiceProvider 包含在您的 config/app.php 中
'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 提供的原始包!