suvarivaza/aura-query-builder-new

1.1 2020-09-19 13:53 UTC

This package is auto-updated.

Last update: 2024-09-28 19:36:33 UTC


README

使用

use Suvarivaza\AQBN\QueryBuilder;

您可以通过使用静态方法 getInstance() 在任何地方获取 QueryBuilder 类的实例。

$db = QueryBuilder::getInstance();

为此,只需在路径 /configs/configDb.php 中创建数据库连接的配置文件(默认使用)或者在你的 index.php 中定义 CONFIG_DB_PATH 常量,如下所示

define('CONFIG_DB_PATH', '/path/configDb.php');

示例配置

$config =  [
    'driver' => 'mysql', // Db driver
    'host' => 'localhost',
    'db_name' => 'db_name',
    'db_user' => 'db_user',
    'db_password' => '',
    'charset' => 'utf8', // Optional
    'prefix' => '', // Table prefix, optional
    'options' => [ // PDO constructor options, optional
        PDO::ATTR_TIMEOUT => 5,
        PDO::ATTR_EMULATE_PREPARES => false,
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    ],
];

或者,您可以将数据库连接配置传递给 getInstance() 方法,示例

$db = QueryBuilder::getInstance($config);

或者,您可以直接创建 QueryBuilder 类的实例,并将 PDO 连接传递给构造函数,如下

$db = new QueryBuilder(PDO $pdo, Aura\SqlQuery\QueryFactory new QueryFactory('mysql'));

或者当然,您也可以使用 PHP DI...

方法

SELECT

$result = $db->select() // empty value equals '*'
            ->from('posts') // table name
            ->where('id', '=', 1)
            ->getAll('obj'); // can by: 'assoc', 'obj', 'both', 'num'. empty value equals 'assoc'

$result = $db->select('id') // column name
            ->from('posts') // table name
            ->where('id', '=', 1)
            ->getOne();     
            
$result = $db->select(['project_id' , 'order_id']) // if you need to get several columns
            ->from('qcomment_projects_orders')
            ->where('order_id', '=', 123)
            ->getValue('project_id'); // if you need to get only one value
                

INSERT

        $db->insert('posts')
            ->set(['title' => 'post title'])
            ->execute();

UPDATE

        $db->update('posts')
            ->set(['title' => 'new post title'])
            ->where('id', '=', 1)
            ->execute();

DELETE

        $db->delete('posts')
            ->where('id', '=', 1)
            ->execute();