定制 papp/cdata 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

papp/cdata

最新稳定版本:v2.14

Composer 安装命令:

composer require papp/cdata

包简介

CData präsentiert ein innovatives Datenbankkonzept, das den schnellen Transfer von Daten ermöglicht. Entwickler müssen sich nicht um SQL-Befehle, deren Optimierung oder Sicherheitsaspekte kümmern. CData verfügt über Level-1- und Level-2-Caching, um die Performance weiter zu steigern. Die Datenbankab

README 文档

README

Die Klasse Cdata wurde entwickelt, um den Umgang mit Daten und deren Speicherung unabhängig von der Datenbank zu ermöglichen. Sie sorgt dafür, dass der Code klar von der Datenbank abgegrenzt ist und vermeidet die Notwendigkeit, datenbankspezifische Befehle im Code zu verwenden.

Pattern Beispiel:

$D['PATTERN']['PLATFORM']['D']['MANUFACTURER'] = [
	'Active'		=> ['Type' => 'checkbox'],
	'ParentId'		=> ['Type' => 'id', 'ForeignKey' => 1], 
	];

ForeignKey: Beim Pattern kann = 1 übergeben werden. Dadurch kann man ein Feld als Fremdschlüssel kennzeichnen. Bei der Ausgabe wird PARENT->CHILD ausgabe generiert, so dass auch nach Fremdschlüssel selekitert wird.

Mögliche Attribute:

  • Type : id, string, number
  • Min : (optional) bei string, gibt mindest Buchstaben an. bei numbers, bestimmt mindest Wert, bereich z.B: -100 oder -100.0000 dann ergibt ein float mit 4 nachkommastellen. ist Min Angegeben, so wird draus ein Pflichtfeld.
  • Max : (optional) bei string, gibt maximal Buchstaben an. bei numbers, bestimmt maximal Wert, bereich z.B: 1000 oder 100.0000 dann ergibt ein float mit 4 nachkommastellen.

SET

Um Daten in die Datenbank zu schreiben, muss die gleiche Array-Struktur verwendet werden. Mit der Set-Funktion können Daten erstellt, aktualisiert oder entfernt werden. Ob Daten neu angelegt oder aktualisiert werden, wird anhand der ID entschieden. Für die Aktualisierung ist es nicht notwendig, den gesamten Array-Baum zu übergeben; es genügt, lediglich die Änderungen zu übermitteln. Zum Löschen eines Datensatzes muss der Wert von "Active" auf -2 gesetzt werden. Dadurch wird der Datensatz zusammen mit seiner Unterstruktur aus der Datenbank entfernt.

Beispiel:

$d['WAREHOUSE']['D']['W1'] = [
	'Active'	=> 1, //['Value' => -2 ],
	'Title'		=> 'Warehouse10', //['Value' => 'Warehouse1'],
];

$d['WAREHOUSE']['D']['W1']['STORAGE']['D']['W1S1'] = [
	'Active'	=> 0,
	'Title' => 'StorageA', //Wird '' oder NULL übergeben, so wird das Attribut gelöscht. Nur nicht bei Type=ForeignKey Da werden auch leere Felder übergeben und nur bei NULL gelöscht
];

$d['WAREHOUSE']['D']['W1']['STORAGE']['D']['W1S2'] = [
	'Active'	=> 0,
	'Title' => 'StorageB',
];
$CData->set_object($d);

GET

Um die gewünschten Daten auszugeben, muss zunächst ein Filter übergeben werden. Dieser ist in einer Struktur ähnlich wie ein Pattern angelegt. Darüber hinaus können zusätzliche Filter zur Datenauswahl übermittelt werden, was im Folgenden erläutert wird.

Beispiel:

$f['WAREHOUSE'] = []; // gib nur WAREHOUSE konnen aus
$f['WAREHOUSE']['STORAGE']['ARTICLE_STOCK'] = []; // Gib bis Ebene 3 die drei Knoten aus.
$CData->get_object($d,$f);
  • Gibt Bedinungslos alle Daten aus.

WHERE:

Ein Filter kann sowohl mit AND- als auch mit OR-Anweisungen erstellt werden. Im folgenden Beispiel werden verschiedene Möglichkeiten aufgezeigt, wie ein solcher Filter gestaltet werden kann. Zudem besteht die Möglichkeit, die Oberstruktur (auch als "Vater" bezeichnet) durch die Unterstruktur (oder "Kinder") mithilfe eines Filters zu bestimmen, um festzulegen, ob diese in den Ausgaben enthalten sein sollen.

Beispiel:

$f['WAREHOUSE']['W'][0]['ID'] = 'W1'; // Filtere Nach WAREHUSE ID W1
$f['WAREHOUSE']['STORAGE']['W'][0]['Active'] = [1]; // Gib nur Active STORAGE aller Warehouse aus
$f['STORAGE']['W'][0]['Title']['>'] = 'R002'; // Gib alle ab R002 aus. Möglich: [NOTIN|LIKE-%|LIKE%-|LIKE%%|>|>=|<=|<]
$f['STORAGE']['W'][0]['Title'] = ['R001','R002']; // Gib mit Tittle R001,T002 Datensätze aus
$f['WAREHOUSE']['STORAGE']['ARTICLE_STOCK']['A']['Stock'] = ['SUM','COUNT','AVG','MIN','MAX']; #Aggregate COUNT,SUM,AVG,MIN,MAX Ermittelt für das Feld Stock. Ist nur für nummerische Werte möglich
$f['PLATFORM']['SUPPLIER']['W'][0]['ARTICLE']['W'][0]['ID'] = ['A1']; #Kann Filter einer höeren Ebene auf die untere Ebene Anwenden. Z.B: wenn ein Supplier gesucht ist, dieser nur Artiekl von ID A1 beinhalte.
$f['PLATFORM']['SUPPLIER']['W'][0]['ARTICLE']['W'][0]['ATTRIBUTE']['W'][0]['ID'] = ['ATT1','ATT2']; #Gib alle Supplier diese Artikel mit Attribut-ID ATT1 oder ATT2 beinhalten.

$f['ARTICLE']['W'][0]['ATTRIBUTE']['W'][0]['ID'] = 'Title'; #Berücksichtige nur Attribute mit der ID "Title"
$f['ARTICLE']['W'][0]['ATTRIBUTE']['W'][0]['LANGUAGE']['W'][0]['Value']['LIKE%%'] = 'L'; #Gib alle "Artikel" an diese ein Attribute Title haben und den Buchstaben "L" in irgend einer Sprache.
$CData->get_object($d,$f);
  • OR: [W][0] | [W][1] | ... Anweisungen
  • AND: [W][0] | [W][0] | ... Anweisungen
  • Vergleichsoperatoren: ['W'][0]['Title']['>'] Mäglich: NOTIN|LIKE-%|LIKE%-|LIKE%%|>|>=|<=|<

Limit:

Die Daten können pro Zweig limitiert werden, indem START und STEP festgelegt werden.

Beispiel:

$f['STORAGE']['L']['START'] = 1;
$f['STORAGE']['L']['STEP'] = 2;
$CData->get_object($d,$f);
  • START: (erforderlich) Begine ab 1. Gilt für Storage, kann auch für unteren Knoten angegeben werden
  • STEP: (optional) maximal 2 Datensätze ausgeben. Gilt für Storage, kann auch für unteren Knoten angegeben werden

Sortieren:

Die Sortierung kann für jeden Zweig individuell festgelegt werden.

Beispiel:

$f['WHAREGOUSE]['O'][0]['Stock'] = 'DESC';
$CData->get_object($d,$f);

Sortieren Speziall Befehle: ID, UTIMESTAMP, ITIMESTAMP

统计信息

  • 总下载量: 19
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 3
  • 依赖项目数: 4
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: LGPL-3.0-or-later
  • 更新时间: 2025-12-02

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固