Model/Entity
Obiekt posiadający atrybuty kolumny, oraz relacje klucze obce (powiązania z innymi obiektami). Entity jest jednoznacznie identyfikowalnym (klucz główny) obiektem.
Info
W systemie eDokumenty, nazwa Model, Entity jest zastąpiona nazwą Bean.
Entity jest obiektem reprezentującym zasób danych, który głównej mierze reprezentuje tabele z bazy danych.
Przykład tworzenia własnego Entity
W systemie Ready według powyższej definicji Bean został wydzielony również jako klasa abstrakcyjna implementująca operacje odpowiedzialne za utrwalanie (zapis danych) w relacyjnej bazie danych PostgreSQL.
- W celu zaimplementowania własnej klasy bean należy utworzyć własną klasę potomną dla klasy abstrakcyjnej Bean
- Określić minimalne atrybuty potrzebne do prawidłowego działania klasy ($pkeyName klucz główny i $tableName nazwa schematu oraz tabeli z którą obiekt wchodzi w interakcję).
Jeżeli nie posiadasz jeszcze tabeli do której miałaby ta klasa zapisywać dane Zajrzyj tutaj -> Jak utworzyć własną tabelę.
Poniżej przykład minimalistycznego beana nie implementującego żadnych nadmiarowych/rozszerzających zachowanie beana akcji:
<?php
namespace ReadyApp\ExampleApp\Entity;
class Example extends \Bean {
/**
* @var $pkeyName Name of primary key column
*/
public string $pkeyName = 'primary_key_value';
/**
* @var $tableName Name of table abbreviated with the name of schema if different from 'public'
*/
public string $tableName = 'custom.exapp_example';
}
EntityExample.inc
Tak przygotowana klasa gotowa jest do użycia.
Tworzenie nowego obiektu
$entityExample = new \ReadyApp\ExampleApp\Entity\Example();
// Set data to object
$entityExample->setData([
'attribute_1' => 1,
'attribute_2' => TRUE,
]);
// Overwrite attribute attribute_1 with new value
$entityExample->set('attribute_1', 2);
// Save data and get primary key value of persisted object
$primaryKey = $entityExample->save();
Odczytywanie parametrów z już istniejącego Beana
Metody powoływania obiektu beana
- Poprzez powołanie pierw instancje owego beana a następnie przesłać
$db
- zasób bazy danych,$id
- czyli $pkeyValue , wartość klucza rekordu z danymi, domyślnie NULL,
$entityExample = new \ReadyApp\ExampleApp\Entity\Example($db = NULL, $id = NULL);
- Poprzez użycie statycznej metody
getCachedInstance($id)
, która przetrzymuje w tablicy całego beana, Metoda próbuje dostać obiekt, poprzez wyszukanie klucza składającego się z nazwy Klasy oraz wartości pierwszego argumentu.
By móc odczytać dane poprzez Beana, należy powołać pierw instancje ów beana i przesłać
$entityExample = new \ReadyApp\ExampleApp\Entity\Example($this, $id);
Metody do pobierania danych
Metoda | Opis | Przykład użycia |
---|---|---|
getPkeyName | Metoda zwróci nazwę klucza głównego | $primaryKeyName = $entityExample->getPkeyName(); |
getPkeyValue | Metoda zwróci wartość klucza głównego | $primaryKeyValue = $entityExample->getPkeyValue(); |
get | Wszystkie parametry możemy odczytywać za pomocą metody, zwróci wartość w formie string | $string = $entityExample->get('attribute_1'); |
getb | Metoda zwróci wartość w formie bool | $isDelBool = $entityExample->getb('is_del'); |
geti | Metoda zwróci wartość w formie int | $idInt = $entityExample->geti('id'); |
getJSON | Metoda zwróci wartość w formie array | $array = $entityExample->getJSON('params'); |
geta | Metoda zwróci wartość klucza w formie array | $primaryKeyName = $entityExample->getPkeyName(); |
getFieldNames | Metoda zwróci nam listę pól z Tabeli bazy danych w formie array | $fieldsArray = $entityExample->getFieldNames(); |
Przykład
$entityExample = new \ReadyApp\ExampleApp\Entity\Example($this, $id);
$fieldsArray = $entityExample->getFieldNames();
$isDelBool = $entityExample->getb('is_del');
Metody do ustawiania wartości
Metoda | Opis | Przykład użycia |
---|---|---|
setData | Metoda przyjmuje tablice z kluczem nazwy kolumny i wartością | $entityExample->setData(['attribute_1'=>'Wartość']); |
set | Metoda przyjmuje, jako pierwszy parametr nazwę kolumny, a jako 2 parametr wartość | $entityExample->set('Klucz', 'Wartość'); |
seta | Metoda przyjmuje, jako pierwszy parametr nazwę kolumny, a jako 2 parametr wartość jako tabele | $entityExample->seta('params', ['width'=> '800px;']); |