jsefton/laravel-resourceable

创建独特的资源并在不需要上下文的情况下将它们相互关联

1.0.0 2021-05-03 12:29 UTC

This package is auto-updated.

Last update: 2024-08-29 05:31:30 UTC


README

此包允许您通过唯一引用加载任何模型实例。其目的是允许在不知道代码库中确切模型的情况下动态传递数据,因为这些数据将存储在其ID关联的数据库中。

它还允许在不定义特定关系的情况下从模型到任何其他模型的创建关系。

Resourceable 特性

可以将此特性附加到任何 eloquent 模型,并可以访问以下方法,这些方法为 resourceable 提供动力。

资源引用

此方法用于将当前实例转换为 Resourceable 字符串。

资源引用在 Endor 中用作一种通过不同功能传递时轻松识别项目的方法。资源引用由类名和当前项目的 ID 组成。例如:

App\Post::204

用法

// If we have an App\Post instance with record ID 204 loaded.
$resource = $post->resourceReference();
// returns App\Post::204

UUID

可以生成一个基于资源的简单哈希字符串作为 UUID。这使用 resourceReference 来保证其唯一性。UUID 作为模型的属性可用

$post->uuid;

对于某些功能,您可能需要一个资源 UUID,然后将其与附加的后缀分组。这可以通过使用 uuid 作为函数来完成,并将返回单个资源的 UUID 和传入的 key

$postt->uuid('<string>');

资源类

加载

您可以对主 Resource 类调用 load 方法,它将使用唯一的资源引用并加载包含数据记录的目标类实例。

如果我们有一个 App\Post 模型和一个记录 ID 为 1,那么我们可以通过以下方式通过资源加载它:

$post = Resource::load('App\Post::1');
// returns an instance of App\Post with record ID 1 loaded.

待办事项

  • 将关系方法添加到包中,这些方法是从核心分离出来的。