sinavia/laravel-entity

为 Laravel 提供的简洁 EAV 实现

v1.2.0 2023-06-06 05:06 UTC

This package is auto-updated.

Last update: 2024-09-06 07:53:22 UTC


README

为 Laravel 提供酷的 schemaless 模型。

详细信息

为 Laravel 提供简洁的实体-属性-值(EAV)实现。此包旨在快速即插即用“无模式”原型设计。为了实现这一点,该包仅使用两个数据库表,而标准的 EAV 至少使用三个表。

特性

  • 仅使用 2 个数据库表实现 schemaless。
  • 实体有类型。每个类型都像是一个类(例如,笔记、分类等)
  • 实体可以有无限字段。字段可以有任何值(字符串、整数、浮点数、数组)
  • 实体可以有层次结构(父级和子级)。当您有分类或路径时非常出色
  • 非常适合快速原型设计
  • 使用人性化的 ID(请参阅 https://github.com/Sinevia/php-library-uid

安装

composer require sinevia/laravel-entity

如何使用

// 1. Create your model class
class Note extends \Sinevia\Entities\Models\Entity {
    function getType()
    {
        return 'note';
    }
}

// 2. Create new instance and add fields
$note = new Note();
$note->save();
$note->setFieldValue('Title','Note title');
$note->setFieldValue('Text','Note text');

// 3. Create new instance and add fields
$note = Note::find($noteId);
echo $note->getFieldValue('Title');
echo $note->getFieldValue('Text');

// 4. Iterate throuhh all notes
$note = Note::all();
foreach($notes as $note){
    echo $note->getFieldValue('Title');
}

表结构

以下结构用于数据库。