briteweb / eloquent-meta
分支自:为Eloquent模型附加元数据
Requires
- php: >=5.6.4
- illuminate/database: 5.4.*|5.5.*|5.6.*
- illuminate/support: 5.4.*|5.5.*|5.6.*
- illuminate/translation: 5.4.*|5.5.*|5.6.*
- illuminate/validation: 5.4.*|5.5.*|5.6.*
- nesbot/carbon: 1.*
Requires (Dev)
- illuminate/console: 5.*
- illuminate/filesystem: 5.*
- phpunit/phpunit: 4.4.*
This package is auto-updated.
Last update: 2024-09-24 11:56:14 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' => [ '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中包含服务提供者
'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为原始包做出贡献!