Przejdź do głównej treści

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.

  1. W celu zaimplementowania własnej klasy bean należy utworzyć własną klasę potomną dla klasy abstrakcyjnej Bean
  2. 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:

Kod
<?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';
}

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

  1. 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);
  1. 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

MetodaOpisPrzykład użycia
getPkeyNameMetoda zwróci nazwę klucza głównego$primaryKeyName = $entityExample->getPkeyName();
getPkeyValueMetoda zwróci wartość klucza głównego$primaryKeyValue = $entityExample->getPkeyValue();
getWszystkie parametry możemy odczytywać za pomocą metody, zwróci wartość w formie string$string = $entityExample->get('attribute_1');
getbMetoda zwróci wartość w formie bool$isDelBool = $entityExample->getb('is_del');
getiMetoda zwróci wartość w formie int$idInt = $entityExample->geti('id');
getJSONMetoda zwróci wartość w formie array$array = $entityExample->getJSON('params');
getaMetoda zwróci wartość klucza w formie array$primaryKeyName = $entityExample->getPkeyName();
getFieldNamesMetoda 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

MetodaOpisPrzykład użycia
setDataMetoda przyjmuje tablice z kluczem nazwy kolumny i wartością$entityExample->setData(['attribute_1'=>'Wartość']);
setMetoda przyjmuje, jako pierwszy parametr nazwę kolumny, a jako 2 parametr wartość$entityExample->set('Klucz', 'Wartość');
setaMetoda przyjmuje, jako pierwszy parametr nazwę kolumny, a jako 2 parametr wartość jako tabele$entityExample->seta('params', ['width'=> '800px;']);