承接 theopenweb/lessql 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

theopenweb/lessql

Composer 安装命令:

composer require theopenweb/lessql

包简介

LessQL: A lightweight and performant PHP ORM alternative

README 文档

README

LessQL is a lightweight and performant alternative to Object-Relational Mapping for PHP.

Guide | Conventions | API Reference | About

If you are looking for an SQL-based approach superior to raw PDO, check out DOP as an alternative.

Fork Notes

  • The notes in this section outlines information regarding differences with the original repository: morris/lessql
  • Other sections MAY have ONLY important/appropriate updates made to them compared with the original repository.
  • Reasons for fork:
    • Last update is old:
    • Errors/warnings when using with newer PHP versions:
      • PHP 8.1 deprecated errors such as with "offsetExists".
      • Row not found exception. require_once of Row fixed it.
    • Still using it in some projects so need to have a working up-to-date source(installed via composer through packagist.).
  • Notes:
    • morris/dop is mentioned as an alternative, but it does not seem to have much development or be maintained.

Installation

Install LessQL via composer: composer require theopenweb/lessql. LessQL requires PHP >= 8.0 and PDO.

Usage

// SCHEMA
// user: id, name
// post: id, title, body, date_published, is_published, user_id
// categorization: category_id, post_id
// category: id, title

// Connection
$pdo = new PDO('sqlite:blog.sqlite3');
$db = new LessQL\Database($pdo);

// Find posts, their authors and categories efficiently:
// Eager loading of references happens automatically.
// This example only needs FOUR queries, one for each table.
$posts = $db->post()
    ->where('is_published', 1)
    ->orderBy('date_published', 'DESC');

foreach ($posts as $post) {
    $author = $post->user()->fetch();

    foreach ($post->categorizationList()->category() as $category) {
        // ...
    }
}

// Saving complex structures is easy
$row = $db->createRow('post', [
    'title' => 'News',
    'body' => 'Yay!',
    'categorizationList' => [
        [
            'category' => ['title' => 'New Category']
        ],
        ['category' => $existingCategoryRow]
    ]
]);

// Creates a post, a new category, two new categorizations
// and connects them all correctly.
$row->save();

Features

  • Efficient deep finding through intelligent eager loading
  • Constant number of queries, no N+1 problems
  • Save complex, nested structures with one method call
  • Convention over configuration
  • Work closely to your database: LessQL is not an ORM
  • No glue code required
  • Clean, readable source code
  • Fully tested with SQLite3, MySQL and PostgreSQL
  • MIT license

Inspired mainly by NotORM, it was written from scratch to provide a clean API and simplified concepts.

Contributors

Thanks!

统计信息

  • 总下载量: 0
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 39
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2024-07-14