CRUD model class

This model will help you to create CRUD models for your entitites, and provides you a huge set of methods after a simpe setup.

Installation

Just print in console

composer require mezon/crud-service-model

And that’s all )

First steps

Let’s define a new class for your DB entity:

class EntityModel extends CrudServiceModel
{
/**
* Constructor
*/
public function __construct()
{
parent::__construct('*', 'entity_table_name');
}
}

In this exact line of code:

parent::__construct('*', 'entity_table_name');

We have specified that we need '*' (all fields) from the table with name 'entity_table_name'.

If you need only some fields from your database, just list them in the first parameter:

parent::__construct('id,field1,field2,field3', 'entity_table_name');

And when you have done this, you will get the following methods.

But before using these methods note that you will need to meet the requirements for some naming conventions.

Field with the primary key must be named as id. I shall add setting to use another name.

Some methods reqire field creation_date for fetching new records for example.

You may add to the table field domain_id for implementing multy instancing out of the box.

Now lets look at available methods:

// Method fetches all new records since the $date
// For example $model->newRecordsSince($domainId, '2021-01-01');
newRecordsSince($domainId, string $date): array;
// Method calculates count of records fetched by filter
// For example $model->recordsCount(false, ['field1 = 1', 'field2 = 2']);
recordsCount($domainId = false, array $where = ['1=1']);
// Method returns data as is without any transformations
getSimpleRecords($domainId, int $from, int $limit, array $where, array $order = []): array;
// Method returns records wich are transformed by method getRecordsTransformer wuch
// you can override in your subclass
getRecords($domainId, int $from, int $limit, array $where = ['1=1'], array $order = []): array;
// Method returns the last $count records filtered by where
lastRecords($domainId, $count, $where): array;
// Method returns records by their ids
fetchRecordsByIds($domainId, string $ids): array;
// Method calculates count of records grouped by fieldName and filtered by where
recordsCountByField($domainId, string $fieldName, array $where): array;
// Method updates records with values record
updateBasicFields($domainId, array $record, array $where): array;
// Method inserts record record
insertBasicFields(array $record, $domainId = 0): array;
// Method deletes all records filtered by where
deleteFiltered($domainId, array $where): int;

It will be great if you will contribute something to this project. Documentation, sharing the project in your social media, bug fixing, refactoring, or even submitting issue with question or feature request. Thanks anyway )

--

--

--

php developer

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

Use Grammarly in Overleaf

How data types are passed in JavaScript

Making a modern JS library in 2020

Frontend cross domain communication make easy

My Experience Learning JavaScript — Part 1

Set up webpack/babel/TypeScript/polyfills to work with IE11

Image to Text to Speech in Cordova JS Framework

Tutorials will only get your feet wet…

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Dodonov Alexey

Dodonov Alexey

php developer

More from Medium

Getting started with RabbitMQ

How to use Tin to quickly set up Apache APISIX in minutes

How to run docker and docker-compose commands inside your Jenkins Container

All you need to know about API security in 2021