astianmuchui/pixelsequel

dev-staging 2024-09-27 18:41 UTC

This package is auto-updated.

Last update: 2024-09-27 18:42:00 UTC


README

wakatime

简介

PixelSequel ORM是一个灵活且轻量级的PHP对象关系映射(ORM)解决方案。这个全面的ORM框架可以无缝集成到PHP应用程序中,提供了一整套强大的工具,用于数据库连接、模式管理和数据操作。该项目包含两个基本组件:模型(Model),提供直观的接口来执行常见的数据库操作,如插入、更新、查询和删除;以及模式(Schema),使开发者能够轻松定义、创建和修改数据库结构。PixelSequel ORM注重简单和高效,是PHP开发者寻求可靠ORM解决方案的宝贵资源。

作者

Sebastian Muchui

许可协议

MIT

版本

0.1.0

安装

您需要在您的机器上安装PHP才能使用此软件包。如果您没有安装PHP,可以从官方PHP网站下载。

其次,确保您已安装了composer。如果没有安装,您可以按照官方composer网站上提供的说明进行安装。完成此操作后,您需要在项目根目录中创建一个composer.json文件,并添加以下代码

    {
        "minimum-stability" : "dev"
    }

之后,您可以在终端中运行以下命令来安装软件包

    composer require astianmuchui/pixelsequel

使用方法

ORM包含两个主要部分,分别为灵活性和易用性而独立构建。这两部分是

  • 模型
  • 模式

模型

模型是ORM的一部分,允许您与数据库表交互。它允许您执行插入、更新、查询和删除等操作。要使用模型,您需要创建模型类的新实例。

    use PixelSequel\Model\Model;

    new Model (
        dbname: 'pixel_sequel',
        username: 'root',
        password: '',
        dbhost: 'localhost'
    );

默认情况下,以下值已设置

  • username: 'root'
  • password: ''
  • dbhost: 'localhost'

在开发环境中,您只需将dbname作为参数传递给模型类即可。

    use PixelSequel\Model\Model;

    new Model (
        dbname: 'pixel_sequel'
    );

插入数据

要插入数据,只需调用Insert静态方法。请注意,模型实例不需要分配给变量,因为方法将推断连接来自实例化的对象。

    use PixelSequel\Model\Model;

    new Model (
        dbname: 'pixel_sequel'
    );

    Model::Insert(

        table: 'users',

        data: [
            'name' => 'John Doe',
            'email' => 'john@gmail.com'
        ]
    );

数据数组的键必须是表中的有效列名。相应的值是要插入到表中的值。在未来的版本中,ORM将能够从表中自动推断列名并在插入之前验证数据。

读取数据

这里您只需要调用All方法。该方法可以接受各种参数以过滤您想要检索的数据。

    use PixelSequel\Model\Model;

    new Model (
        dbname: 'pixel_sequel'
    );

    $users = Model::All(

        table: 'users',

        where: [
            'name' => 'John Doe'
        ]

        where_like: [
            'email' => 'gmail'
        ]

        order_by: 'id',
        order: 'DESC',

        limit: 10
    );
  • 所有参数是
    table: The table to read from
    where: An associative array of the column names and their values to filter the data using the where clause
    where_like: An associative array of the column names and their values to perform searches
    order_by: The column to order the data by
    order: The order to use. Either 'ASC' or 'DESC'
    limit: The number of records to retrieve
    json: A boolean value to determine if the data should be returned as a json string or an array

方法返回检索到的数据对象。然后您可以遍历该对象以获取数据。如果将限制设置为1,则需要选择对象的零索引以获取数据。在开发此ORM时,一个主要目标就是让单个函数执行所有选择功能。还有其他选择方法,但请忽略它们,因为它们写得不好,将在未来的版本中删除。

更新数据

更新方法基本上是插入方法的复制品,但是必须传递用于标识行及其值的参数类型。

    use PixelSequel\Model\Model;

    new Model (
        dbname: 'pixel_sequel'
    );

    Model::Update(

        table: 'users',
        param_t: 'id'
        param_n: 1,
        data: [
            'name' => 'John Doe',
            'email' => 'john@gmail.com'
        ]
    );

param_t 是参数类型,通常是列名。param_n 是参数类型的值。

删除数据

使用 Delete 方法从数据库中删除数据。它接受表名以及用于标识要删除的行的参数类型和值。

    use PixelSequel\Model\Model;

    new Model (
        dbname: 'pixel_sequel'
    );

    Model::Delete(

        table: 'users',
        param_t: 'id'
        param_n: 1
    );

模式

模式是ORM的一部分,允许您与数据库表交互。它允许您执行创建、更新和删除表等操作。要使用模式,您需要创建模型类的实例并将数据库连接传递给模式类。请注意,模型实例不需要分配给变量,模式也是如此。

    use PixelSequel\Model\Model;
    use PixelSequel\Schema\Schema;

    new Model (
        dbname: 'pixel_sequel'
    );

    new Schema (
        Model::Connection()
    );

可以通过在模型类上调用 Connected 方法来检查连接。该方法返回一个布尔值。

    use PixelSequel\Model\Model;
    use PixelSequel\Schema\Schema;

    new Model (
        dbname: 'pixel_sequel'
    );



    if (Model::Connected())
    {
        new Schema (
          Model::Connection()
        );

        echo 'Connected';
    }
    else
    {
        echo 'Not Connected';
    }

创建表

一旦建立连接,您可以通过在模式类上调用 Create 方法来创建表。该方法接受表名和一个关联数组,其中包含列名及其数据类型。

    use PixelSequel\Model\Model;
    use PixelSequel\Schema\Schema;

    new Model (
        dbname: 'pixel_sequel'
    );

    new Schema (
        Model::Connection()
    );

    Schema::Create (
        table: 'pxtest',
        structure: [
            "id" => [
                "type" => "int",
                "length" => 11,
                "primary_key" => true
            ],

            "username" => [
                "type" => "varchar",
                "length" => 11,
                "null" => false
            ]

        ]
    );

结构数组的键必须是表中的有效列名。相应的值是列数据类型及其属性的关联数组。属性包括

    type: The data type of the column
    length: The length of the column
    primary_key: A boolean value to determine if the column is a primary key
    null: A boolean value to determine if the column can be null
    auto_increment: A boolean value to determine if the column is auto increment

修改表

使用 Alter 方法修改表。它接受三个参数:表名、列名和要设置的内容。

    use PixelSequel\Model\Model;
    use PixelSequel\Schema\Schema;

    new Model (
        dbname: 'pixel_sequel'
    );

    new Schema (
        Model::Connection()
    );

    Schema::Alter (
        table: 'pxtest',
        column: 'username'
        set: "int(255) NOT NULL"
    );

删除表

使用 Drop 方法删除表。它接受表名作为参数。

    use PixelSequel\Model\Model;
    use PixelSequel\Schema\Schema;

    new Model (
        dbname: 'pixel_sequel'
    );

    new Schema (
        Model::Connection()
    );

    Schema::Drop (
        table: 'pxtest'
    );

要断开与数据库的连接,可以在模型类上调用 Disconnect 方法。

    use PixelSequel\Model\Model;
    use PixelSequel\Schema\Schema;

    new Model (
        dbname: 'pixel_sequel'
    );

    new Schema (
        Model::Connection()
    );

    Model::Disconnect();

即将推出的功能

  • 在插入之前验证数据
  • 自动推断表名中的列名
  • 更强大的选择方法
  • 更强大的更新方法
  • 更强大的删除方法
  • 更强大的创建方法
  • 消除键值语法

贡献

欢迎贡献。您可以通过分叉仓库并创建拉取请求来贡献。如果您发现任何错误或对功能有请求,也可以打开一个问题。