OlfeiTeam / Delphi Orm
Delphi ORM
Stars: ✭ 16
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
Rbatis
Rust ORM Framework High Performance Rust SQL-ORM(JSON based)
Stars: ✭ 482 (+2912.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].