sirmekus/ahia

面向对象数据库 CRUD 操作方式

1.0.2 2022-12-31 14:55 UTC

This package is auto-updated.

Last update: 2024-09-10 00:46:19 UTC


README

Ahia 帮助进行数据库 CRUD 操作,以实现更强大和语法化的操作。

安装

要开始使用,您只需

composer require sirmekus/ahia

即可。在伊博语中,Ahia 的意思是 "市场",在上下文中,数据库是一个 "市场",里面有许多 '物品'(数据)。哈哈。

用法

您不再需要在脚本中手动编写复杂的 SQL 查询,使您的代码更易于阅读和清洁。 欢迎来到面向对象的方式

使用此包需要了解我们的约定(并不多。您根本不需要学习任何新东西。别害怕...#眨眼)。但首先,为了开始使用此功能,您应该在脚本中导入 Model 类,如下所示

require_once 'path_to_vendor/autoload.php';

use Sirmekus\Database\Model;

$model = new Model();

默认情况下,您应该创建一个 .env(首选)或 env.php 文件,该文件包含您的数据库配置。数据库配置连接将从该文件调用并初始化。您应该复制并将此文件放在您的根目录中(带有确切的密钥)

#(.env)
DB_HOST=localhost
DB_NAME=your_database_name
DB_USER=your_username
DB_PASS=your_database_password

或者

//(env.php)
define( 'DB_HOST', 'localhost' );
define( 'DB_NAME', 'your_database_name' );
define( 'DB_USER', 'your_username' );
define( 'DB_PASS', 'your_database_password' );

我们鼓励您将核心数据库连接配置存储在上述建议的文件中。但是,您可以选择将这些配置作为参数传递给类,如下所示

require_once 'path_to_vendor/autoload.php';

use Sirmekus\Database\Model;

$model = new Model($DB_HOST, $DB_USER, $DB_NAME, $DB_PASS);

传递表名

当使用此类中的任何 CRUD 方法时,最后一个参数总是数据库表的名称(您很快就会看到以下示例)。这是在运行时始终传递表名的一种方式。

另一种方式是将公共 table 属性设置为表的名称。例如

require_once 'path_to_vendor/autoload.php';

use Sirmekus\Database\Model;

$model = new Model();
$model->table = "table";

最后,您可以通过扩展 Model 类并将类命名为与表相同的名称来指定要使用的表。默认情况下,如果没有指定上述任何内容,则使用此方法。类的 小写、下划线命名 将成为要使用的数据库表的名称。例如

//Fictious Class => TestTable.php
require_once 'path_to_vendor/autoload.php';

namespace YourName\Folder;

use Sirmekus\Database\Model;

class TestTable extends Model
{
    //The table name is 'test_table'. You don't need to add any property or method (unless you wish to add)
}
//Now you can use it like you would with the "Model" class => test.php
require_once 'path_to_vendor/autoload.php';

use YourName\Folder\TestTable;

$model = new TestTable();
//name of the table will be **"test_table"** and you can use every method defined in the parent class.

如果您不喜欢我们的命名约定,也可以将公共 table 属性设置为表的名称或将其作为参数传递给任何 CRUD 方法。要获取您的表名,只需在 Model 类的实例或任何由此类派生的类上调用 getTable() 方法。

请注意,在调用 CRUD 方法或通过在实例化的类上设置 table 属性时,您应该始终通过传递参数设置表名,或者如果您直接使用 Model 类,则通过设置 table 属性。

示例

  • 插入

您可以通过使用类的 insert() 方法向表中插入数据。此方法期望第一个参数是多维数组的数据(指定表列和适当的值),第二个参数是可选的 "table" 参数。例如

require_once 'path_to_vendor/autoload.php';

use Sirmekus\Database\Model;

$model = new Model();
$model->insert([
    'name'=>"Sir Mekus", 
    "country"=>"Nigeria"
    ]);

//or, with name of table
$model->insert([
    'name'=>"Sir Mekus", 
    "country"=>"Nigeria"
    ], 
    $table='developers'
    );

您还可以通过在运行时指定动态属性,然后调用 save() 方法,将数据插入到表中。例如

require_once 'path_to_vendor/autoload.php';

use Sirmekus\Database\Model;

$model = new Model();
$model->name = "Sir Mekus";
$model->country = "Nigeria";
$model->save();

它们都有效地完成了相同的工作。您可以选择,而不是始终指定您的表,将 Model 类扩展为您的表名称,然后将实际类名作为名称,然后使用此扩展类运行您的操作。

  • 更新

要更新表,请调用 update() 方法,将一个数据数组(指定表列和适当的值)作为第一个参数,一个可选的 "where" 子句数组作为第二个参数,以及一个可选的 "table name" 作为最后一个参数。例如

require_once 'path_to_vendor/autoload.php';

use Sirmekus\Database\Model;

$model = new Model();
$model->update([
    'name'=>"Sir Mekus", 
    "country"=>"Nigeria"
    ]);

//or
$model->update([
    'name'=>"Sir Mekus", 
    "country"=>"Nigeria"
    ], 
    [
        'email'=>'mekus600@gmail.com'
    ]
    );

//or
$model->update([
    'name'=>"Sir Mekus", 
    "country"=>"Nigeria"
    ], 
    [
        'email'=>'mekus600@gmail.com'
    ],
     $table='developers');
  • 更新或创建记录

有时我们可能需要更新数据库中的记录,如果该记录存在则更新,否则插入。您可以通过调用updateOrCreate()方法来实现,将指定where子句(列和键,使每个记录唯一的列和键)的键值数组作为第一个参数传递;包含表column-value的键值数组作为第二个参数(要插入或创建的内容);然后可以可选地传递table作为最后一个参数。示例

require_once 'path_to_vendor/autoload.php';

use Sirmekus\Database\Model;

$model = new Model();

$model->updateOrCreate(
    [
        'email'=>$email
    ], 
    [
        'name' => $name, 
        'email' => $email, 
        'phone' => $tel
    ]
);

or 

$model->updateOrCreate(
    [
        'email'=>$email
    ], 
    [
        'name' => $name, 
        'email' => $email, 
        'phone' => $tel
    ], 
    $table='developers');

它会使用第一个参数在数据库中搜索匹配的记录。如果找到记录,将使用第二个参数中的数据更新表,否则将通过合并第一个和第二个参数创建新记录。

  • 选择记录

要从表中选择,只需调用select()方法。此方法接受一个可选的数组作为第一个参数,如上所述,但具有特殊含义的特定键;作为第二个参数的可选键值(表"column=>value")"where"子句的键值数组;以及可选的table作为最后一个参数。

示例

require_once 'path_to_vendor/autoload.php';

use Sirmekus\Database\Model;

$model = new Model();

$model->select(
    [
        'limit'=>20,
        'offset'=>3,
        'orderBy'=>'email',
        'groupBy'=>'location'
    ],
);

或者

require_once 'path_to_vendor/autoload.php';

use Sirmekus\Database\Model;

$model = new Model();

$model->select(
    [
        'column'=>'name, email, phone_number, location',
        'limit'=>20,
        'offset'=>3,
        'orderBy'=>'email',
        'groupBy'=>'location',
        'debug'=>true,
    ],
    [
        'location' => 'Nigeria'
    ]
);

第一个参数中期望的数组键是可选的,它们是:

  • column:包含要选择的列的字符串(多个列应以逗号分隔)。如果未指定,则选择所有列。

  • limit:包含limit子句的整数

  • offset:包含offset子句的整数

  • orderBy:包含应使用orderBy子句对结果进行排序的特定列的名称

  • groupBy:包含应使用groupBy子句对结果进行排序的特定列的名称

  • debug:如果设置或存在,则将在脚本中回显构建的查询以进行检查。

  • 记录计数

要计数记录,只需使用count()方法。与上述select()方法类似,但唯一可能的数组键只是:column。示例

require_once 'path_to_vendor/autoload.php';

use Sirmekus\Database\Model;

$model = new Model();

$model->count(
    [
        'column'=>'name, email, phone_number, location'
    ]
);

在上面的示例中,指定了'column'。这很有用,因为您可以将用于select()方法调用的相同配置数组传递给count()方法,以便仅选择column键(因为它需要所有它需要的)。

您还可以通过方法的第二个参数指定where子句。示例

require_once 'path_to_vendor/autoload.php';

use Sirmekus\Database\Model;

$model = new Model();

$model->count(
    [
        'column'=>'name, email, phone_number, location'
    ],
    [
        'email'=>'email@example.com'
    ]
);

如果没有第一个参数,则将是:

require_once 'path_to_vendor/autoload.php';

use Sirmekus\Database\Model;

$model = new Model();

$model->count(
    null,
    [
        'language' => 'php'
    ]
);

请记住,最后一个参数是查询的表名,这是一个可选参数。

  • 删除记录

要删除记录,只需调用delete()方法,并将可选的键值数组作为第一个参数传递,如其他情况一样,并将可选的table参数值作为最后一个参数。示例

require_once 'path_to_vendor/autoload.php';

use Sirmekus\Database\Model;

$model = new Model();

$model->delete([
        'email'=>'fake@example.com'
    ]);

注意,如果您已经设置了动态属性,然后调用此方法而不传递第一个参数的动态属性,则添加的动态属性或属性将被视为并用作where子句。示例

require_once 'path_to_vendor/autoload.php';

use Sirmekus\Database\Model;

$model = new Model();

$model->email = 'fake@example.com';

$model->delete();

同时

您可以在LinkedIn上与我联系,以获取有价值的建议,并我们可以共同扩大我们的网络。

Webloit上支持我们。

并关注我的Twitter

我鼓励贡献,即使是在文档中。谢谢,我真的希望您发现这个包很有用。