# CRUDlex\AbstractData

- CRUDlex\MySQLData

class `AbstractData`

  The abstract class for reading and writing data.

  constant `DELETION_SUCCESS`

    Return value on successful deletion.

  constant `DELETION_FAILED_STILL_REFERENCED`

    Return value on failed deletion due to existing references.

  constant `DELETION_FAILED_EVENT`

    Return value on failed deletion due to a failed before delete event.

  property `definition`

    protected EntityDefinition

    Holds the entity definition.

  property `filesystem`

    protected FilesystemInterface

    Holds the filesystem.

  property `events`

    protected EntityEvents

    Holds the events.

  `doDelete`(Entity $entity, $deleteCascade)

    Performs the actual deletion.

    Parameters: | $entity (Entity) – the id of the entry to delete $deleteCascade (boolean) – whether to delete children and subchildren
    Returns: | integer true on successful deletion

  `hydrate`($row)

    Creates an Entity from the raw data array with the field name as keys and field values as values.

    Parameters: | $row (array) – the array with the raw data
    Returns: | Entity the entity containing the array data then

  `enrichEntityWithMetaData`($id, Entity $entity)

    Enriches an entity with metadata: id, version, created_at, updated_at

    Parameters: | $id (mixed) – the id of the entity to enrich $entity (Entity) – the entity to enrich

  `getManyFields`()

    Gets the many-to-many fields.

    Returns: | array|string[] the many-to-many fields

  `getFormFields`()

    Gets all form fields including the many-to-many-ones.

    Returns: | array all form fields

  `deleteChildren`($id, $deleteCascade)

    Performs the cascading children deletion.

    Parameters: | $id (integer) – the current entities id $deleteCascade (boolean) – whether to delete children and sub children
    Returns: | integer returns one of: - AbstractData::DELETION_SUCCESS -> successful deletion - AbstractData::DELETION_FAILED_STILL_REFERENCED -> failed deletion due to existing references - AbstractData::DELETION_FAILED_EVENT -> failed deletion due to a failed before delete event

  `getReferenceIds`($entities, $field)

    Gets an array of reference ids for the given entities.

    Parameters: | $entities (array) – the entities to extract the ids $field (string) – the reference field
    Returns: | array the extracted ids

  `doCreate`(Entity $entity)

    Performs the persistence of the given entity as new entry in the datasource.

    Parameters: | $entity (Entity) – the entity to persist
    Returns: | boolean true on successful creation

  `doUpdate`(Entity $entity)

    Performs the updates of an existing entry in the datasource having the same id.

    Parameters: | $entity (Entity) – the entity with the new data
    Returns: | boolean true on successful update

  `getEvents`()

    Gets the events instance.

    Returns: | EntityEvents the events instance

  `get`($id)

    Gets the entity with the given id.

    Parameters: | $id (string) – the id
    Returns: | Entity the entity belonging to the id or null if not existant

  `listEntries`($filter =, []$filterOperators =, []$skip = null, $amount = null, $sortField = null, $sortAscending = null)

    Gets a list of entities fullfilling the given filter or all if no selection was given.

    Parameters: | $filter (array) – the filter all resulting entities must fulfill, the keys as field names $filterOperators (array) – the operators of the filter like “=” defining the full condition of the field $skip (integer|null) – if given and not null, it specifies the amount of rows to skip $amount (integer|null) – if given and not null, it specifies the maximum amount of rows to retrieve $sortField (string|null) – if given and not null, it specifies the field to sort the entries $sortAscending (boolean|null) – if given and not null, it specifies that the sort order is ascending, descending else
    Returns: | Entity[] the entities fulfilling the filter or all if no filter was given

  `create`(Entity $entity)

    Persists the given entity as new entry in the datasource.

    Parameters: | $entity (Entity) – the entity to persist
    Returns: | boolean true on successful creation

  `update`(Entity $entity)

    Updates an existing entry in the datasource having the same id.

    Parameters: | $entity (Entity) – the entity with the new data
    Returns: | boolean true on successful update

  `delete`($entity)

    Deletes an entry from the datasource.

    Parameters: | $entity (Entity) – the entity to delete
    Returns: | integer returns one of: - AbstractData::DELETION_SUCCESS -> successful deletion - AbstractData::DELETION_FAILED_STILL_REFERENCED -> failed deletion due to existing references - AbstractData::DELETION_FAILED_EVENT -> failed deletion due to a failed before delete event

  `getIdToNameMap`($entity, $nameField)

    Gets ids and names of a table. Used for building up the dropdown box of reference type fields for example.

    Parameters: | $entity (string) – the entity $nameField (string) – the field defining the name of the rows
    Returns: | array an array with the ids as key and the names as values

  `countBy`($table, $params, $paramsOperators, $excludeDeleted)

    Retrieves the amount of entities in the datasource fulfilling the given parameters.

    Parameters: | $table (string) – the table to count in $params (array) – an array with the field names as keys and field values as values $paramsOperators (array) – the operators of the parameters like “=” defining the full condition of the field $excludeDeleted (boolean) – false, if soft deleted entries in the datasource should be counted, too
    Returns: | integer the count fulfilling the given parameters

  `hasManySet`($field, $thatIds, $excludeId = null)

    Checks whether a given set of ids is assigned to any entity exactly like it is given (no subset, no superset).

    Parameters: | $field (string) – the many field $thatIds (array) – the id set to check $excludeId (string|null) – one optional own id to exclude from the check
    Returns: | boolean true if the set of ids exists for an entity

  `getDefinition`()

    Gets the EntityDefinition instance.

    Returns: | EntityDefinition the definition instance

  `createEmpty`()

    Creates a new, empty entity instance having all fields prefilled with null or the defined value in case of fixed fields.

    Returns: | Entity the newly created entity