astianmuchui / pixelsequel
轻量级PHP ORM
This package is auto-updated.
Last update: 2024-09-27 18:42:00 UTC
README
简介
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();
即将推出的功能
- 在插入之前验证数据
- 自动推断表名中的列名
- 更强大的选择方法
- 更强大的更新方法
- 更强大的删除方法
- 更强大的创建方法
- 消除键值语法
贡献
欢迎贡献。您可以通过分叉仓库并创建拉取请求来贡献。如果您发现任何错误或对功能有请求,也可以打开一个问题。