All Projects → OlfeiTeam → Delphi Orm

OlfeiTeam / Delphi Orm

Delphi ORM

Programming Languages

pascal
1382 projects
delphi
115 projects

Projects that are alternatives of or similar to Delphi Orm

Sqlsugar
Best ORM Fastest ORM Simple Easy Sqlite orm Oracle ORM Mysql Orm postgresql ORm SqlServer oRm 达梦 ORM 人大金仓 ORM 神通ORM C# ORM
Stars: ✭ 3,748 (+23325%)
Mutual labels:  orm, mysql, sqlite
Sequelize
An easy-to-use and promise-based multi SQL dialects ORM tool for Node.js
Stars: ✭ 25,422 (+158787.5%)
Mutual labels:  orm, mysql, sqlite
Walkable
A Clojure(script) SQL library for building APIs: Datomic® (GraphQL-ish) pull syntax, data driven configuration, dynamic filtering with relations in mind
Stars: ✭ 384 (+2300%)
Mutual labels:  orm, mysql, sqlite
Wetland
A Node.js ORM, mapping-based. Works with MySQL, PostgreSQL, SQLite and more.
Stars: ✭ 261 (+1531.25%)
Mutual labels:  orm, mysql, sqlite
Bookshelf
A simple Node.js ORM for PostgreSQL, MySQL and SQLite3 built on top of Knex.js
Stars: ✭ 6,252 (+38975%)
Mutual labels:  orm, mysql, sqlite
Node Orm2
Object Relational Mapping
Stars: ✭ 3,063 (+19043.75%)
Mutual labels:  orm, mysql, sqlite
Rbatis
Rust ORM Framework High Performance Rust SQL-ORM(JSON based)
Stars: ✭ 482 (+2912.5%)
Mutual labels:  orm, mysql, sqlite
Pony
Pony Object Relational Mapper
Stars: ✭ 2,762 (+17162.5%)
Mutual labels:  orm, mysql, sqlite
Diesel
A safe, extensible ORM and Query Builder for Rust
Stars: ✭ 7,702 (+48037.5%)
Mutual labels:  orm, mysql, sqlite
Go Sqlbuilder
A flexible and powerful SQL string builder library plus a zero-config ORM.
Stars: ✭ 539 (+3268.75%)
Mutual labels:  orm, mysql, sqlite
Xo
Command line tool to generate idiomatic Go code for SQL databases supporting PostgreSQL, MySQL, SQLite, Oracle, and Microsoft SQL Server
Stars: ✭ 2,974 (+18487.5%)
Mutual labels:  orm, mysql, sqlite
Xorm
Simple and Powerful ORM for Go, support mysql,postgres,tidb,sqlite3,mssql,oracle, Moved to https://gitea.com/xorm/xorm
Stars: ✭ 6,464 (+40300%)
Mutual labels:  orm, mysql, sqlite
Mikro Orm
TypeScript ORM for Node.js based on Data Mapper, Unit of Work and Identity Map patterns. Supports MongoDB, MySQL, MariaDB, PostgreSQL and SQLite databases.
Stars: ✭ 3,874 (+24112.5%)
Mutual labels:  orm, mysql, sqlite
Doctrinejsonfunctions
Doctrine DQL functions for SQL JSON data type
Stars: ✭ 325 (+1931.25%)
Mutual labels:  orm, mysql, sqlite
Freesql
🦄 .NET orm, Mysql orm, Postgresql orm, SqlServer orm, Oracle orm, Sqlite orm, Firebird orm, 达梦 orm, 人大金仓 orm, 神通 orm, 翰高 orm, 南大通用 orm, Click house orm, MsAccess orm.
Stars: ✭ 3,077 (+19131.25%)
Mutual labels:  orm, mysql, sqlite
Maghead
The fastest pure PHP database framework with a powerful static code generator, supports horizontal scale up, designed for PHP7
Stars: ✭ 483 (+2918.75%)
Mutual labels:  orm, mysql, sqlite
Simple Crud
PHP library to provide magic CRUD in MySQL/Sqlite databases with zero configuration
Stars: ✭ 190 (+1087.5%)
Mutual labels:  orm, mysql, sqlite
Db
Data access layer for PostgreSQL, CockroachDB, MySQL, SQLite and MongoDB with ORM-like features.
Stars: ✭ 2,832 (+17600%)
Mutual labels:  orm, mysql, sqlite
Denodb
MySQL, SQLite, MariaDB, PostgreSQL and MongoDB ORM for Deno
Stars: ✭ 498 (+3012.5%)
Mutual labels:  orm, mysql, sqlite
Typeorm
ORM for TypeScript and JavaScript (ES7, ES6, ES5). Supports MySQL, PostgreSQL, MariaDB, SQLite, MS SQL Server, Oracle, SAP Hana, WebSQL databases. Works in NodeJS, Browser, Ionic, Cordova and Electron platforms.
Stars: ✭ 26,559 (+165893.75%)
Mutual labels:  orm, mysql, sqlite

delphi-orm

Поддерживает работу с MySQL и SQLite

Подкиньте в папку с проектом SchemaGenerator.exe. и в настройках проекта пропишите project-options-build events-prebuild events-command $(PROJECTDIR)\SchemaGenerator migration="$(PROJECTDIR)\Classes\DataBase\Migrations" , где "$(PROJECTDIR)\Classes\DataBase\Migrations" путь к файлам для миграций

Типы данных

procedure NewString(AName: string; ASize: integer = 255; ADefault: string = 'NULL');
procedure NewInteger(AName: string; ASize: integer = 11; ADefault: string = 'NULL');
procedure NewIntegerUnsigned(AName: string; ASize: integer = 11; ADefault: string = 'NULL');
procedure NewFloat(AName: string; ASize: integer = 16; ADecimalSize: integer = 2; ADefault: string = 'NULL');
procedure NewText(AName: string; ASize: integer = 65535; ADefault: string = 'NULL');
procedure NewBoolean(AName: string; ADefault: boolean = false);
procedure NewDateTime(AName: string; ADefault: string = 'NULL');
procedure NewDate(AName: string; ADefault: string = 'NULL');
procedure NewBlob(AName: string);

procedure NewTimestamps;

Пример миграции

unit migration_001_create_users_table;

interface

uses
  OlfeiSchema;

implementation

begin
  OlfeiTable := NewTable('users');

  OlfeiTable.NewString('name'); 
  OlfeiTable.NewString('password');
  OlfeiTable.NewString('login');
  OlfeiTable.NewTimestamps(); // Создает поля created_at и update_at

end.

Пример сида

unit migration_002_add_user_seed;

interface

uses
  OlfeiSchema;

implementation

begin
  OlfeiSeed := OlfeiTable.Seed;
  
  OlfeiSeed.Values['login'] := 'admin';
  OlfeiSeed.Values['password'] := '123';
  OlfeiSeed.Values['name'] := 'Администратор';
end.

Пример модели

unit UserModel;

interface

uses
  OlfeiSQL, OlfeiORM;

type
  [TOlfeiTable('users')]
  TUserModel = class(TOlfeiORM)
	public
	  [TOlfeiField('login')]
	  property Login: String index 0 read GetString write SetString;

	  [TOlfeiField('password')]
	  property Password: String index 1 read GetString write SetString;

	  [TOlfeiField('name')]
	  property Name: String index 2 read GetString write SetString;
  end;

implementation

end.

Пример коллекции

unit UserModel;

interface

uses
  OlfeiSQL, OlfeiCollection, UserModel;

type
  TUsersModels = class(TOlfeiCollection<TUserModel>)
	public
	  constructor Create(FDB: TOlfeiDB); overload;
  end;

implementation

constructor TUsersModels.Create(FDB: TOlfeiDB);
begin
  inherited Create(FDB, TUserModel);
end;

end.

Пример модели со связанной коллекцией

[TOlfeiTable('users')]
TUserModel = class(TOlfeiORM)
	private
		function GetOlfeiImages(index: integer): TOlfeiCollection<TOlfeiImage>;
		function GetOlfeiFriends(index: integer): TOlfeiCollection<TUserModel>;
	public
		[TOlfeiField('login')]
		property Login: String index 0 read GetString write SetString;

		[TOlfeiField('password')]
		property Password: String index 1 read GetString write SetString;

		[TOlfeiField('name')]
		property Name: String index 2 read GetString write SetString;
		
		[TOlfeiCollectionField('id', 'user_id')]
		property Images: TOlfeiCollection<TOlfeiImage> index 0 read GetOlfeiImages;

		[TOlfeiPivotField('user_friend', 'user_id', 'friend_id')]
		property Friends: TOlfeiCollection<TUserModel> index 1 read GetOlfeiFriends;
	end;
	
// Методы привязки

function TUserModel.GetOlfeiImages(index: Integer): TOlfeiCollection<TOlfeiImage>;
begin
  Result := TOlfeiCollection<TOlfeiImage>(Self.GetForeignCollection(index, TOlfeiImage));
end;

function TUserModel.GetOlfeiFriends(index: Integer): TOlfeiCollection<TUserModel>;
begin
  Result := TOlfeiCollection<TUserModel>(Self.GetPivotCollection(index, TUserModel));
end;

Работа с моделями и коллекциями

DB := InitDB; // Пример можно найти в Demo
Users := TUsersModels.Create(DB);

User := Users.Where('login', Login).Where('password', Pass).First;
Result := User.Exists;

User.Images; // Коллекция связанных изображений
for Image in User.Images do
	ShowMessage(Image.Path);

Users.Free; // Очищаем коллекцию, все связанные модели очистит сборщик мусора
DB.Free;

Обход данных

Users := TUsersModels.Create(DB);
for User in Users.All do
	ShowMessage(User.Name);

Удаление записи

User.Delete;

Очистка таблицы

Users.Truncate;

Методы для коллекций

.Where('field', 'value')
.Where('field', '=', 'value') // Тажке можно любое условие >, >=, <, <= и тд
.Where('field, 'IN', DB.Raw('(1, 2, 3)'))
.OrWhere('field', 'value')
.OrWhere('field', '=', 'value') // Тажке можно любое условие >, >=, <, <= и тд
.OrWhere('field, 'IN', DB.Raw('(1, 2, 3)'))

.OrderBy('field', 'ASC') // Можно также указать как DESC

.StartGroup
.StartAndGroup
.StartOrGroup
.EndGroup

.Join('table', 'remote_key', 'local_key')
.WhereFor('table', 'field', '=', 'value') // Тажке можно любое условие >, >=, <, <= и тд
.OrWhereFor('table', 'field', '=', 'value') // Тажке можно любое условие >, >=, <, <= и тд
.OrderByFor('table', 'field', 'ASC') // Можно также указать как DESC

.Limit('offset', 'limit')
.Count
.Sum('field')
.All
.First

Продолжение следует...

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].