此包最新版本(v0.3.8)没有可用的许可信息。

用于PHP的精美数据库库

v0.3.8 2013-07-24 06:52 UTC

This package is auto-updated.

Last update: 2024-09-23 19:45:39 UTC


README

提供一个简单(且精美)的界面来处理数据库,目前支持PostgreSQL(8.4+)、MySQLi(5.1+)和SQLite3(3.7+),使用相同的API。

快速执行迁移,尽管如果您想跟踪它,必须为它编写包装器。

CI

第一步

您可以直接加载表并几乎轻松地处理它们,或者您可以直接从代码中创建表,从而跳过CLI或GUI来完成。

<?php

use Grocery\Base as DB;

# create a connection by DSN
$db = DB::connect('pgsql://postgres:test@localhost:5432/test#pdo');

# load existing table by accesing an array member
$foo = $db['my_table'];

# pick one row randomly!
$bar = $foo->select('*', [
  'field' => 'value',
  'OR' => [
    'foo' => null,
    'foo >=' => gmdate('Y-m-d H:i:s'),
  ], // WHERE "field" = 'value' AND ("foo" IS NULL OR "foo" >= '2023-08-22 23:45:12')
], [
  'order_by' => [$db->rand()], // ORDER BY RAND|RANDOM()
]);

# create another table
$db['other_table'] = [
  'id' => DB::pk(),
  'title' => DB::str(['not_null' => true]),
  'published_at' => DB::date(['default' => $db->now()]),
];

# inserting a new row
$db->other_table->insert([
  'title' => 'Hello World!',
  'published_at' => date('Y-m-d H:i:s'),
]);

创建新表时,存在通用类型。

  • 主键:最常见的字段,通常命名为 id
  • 整数:基本数值类型,用于关系、计数等。
  • 浮点数:用于浮点值的扩展数值类型
  • 数值:用于货币、小数和其他非浮点值
  • 字符串:Varchar、char等。默认最大长度为255
  • 文本:对于无限制的纯文本,取决于其驱动程序
  • 二进制:Blob值,但请勿在数据库上保存您的文件
  • 布尔:真实布尔值,取决于其驱动程序的字符或tiny-ints
  • 时间戳:不是*nix时间戳,datetime的别名
  • 日期时间:常见的日期+时间字符串,如date('Y-m-d H:i:s')
  • 日期:仅日期部分 Y-m-d
  • 时间:时间部分 H:i:s

关于迁移

Grocery为此提供了hydrate()辅助方法。

<?php

# table fields
$foo = [
  'id' => 'primary_key',
  'bar' => 'string',
  'candy' => 'timestamp',
];

# indexed fields
$bar = ['bar', 'candy' => TRUE];

# create if not exists
isset($db['tbl']) || $db['tbl'] = $foo;

# performs the hydration
Grocery\Helpers::hydrate($db['tbl'], $foo, $bar);

内部它将从指定的表加载当前详细信息,然后比较并更新您的表定义以与您提供的变化相匹配。

请注意,某些操作受到驱动程序限制的限制。

基本用法

通过$db[...]语法提供对表的访问,大多数操作可以链接。

最后一个调用必须是获取器,例如first()pick()get()all()

$tbl = $db['tbl'];
$tbl->where(['status' => 0])->count();
$tbl->where(['status' => -1])->delete();
$tbl->select('*')->where(['status' => 1])->all();
$tbl->order(['created_at' => 1])->where(['status' => 2])->select('*')->first();
$tbl->where(['id' => 42])->update(['value' => 'OSOM']);

安装

使用composer是将Grocery作为依赖项安装的最佳方式。

{
  "require": {
    "habanero/grocery": "dev-master"
  }
}

然后,在项目的顶部包含vendor/autoload.php脚本。

贡献!

到目前为止,有许多方式可以与Grocery一起工作,但README已经太短了。

如果您想测试并编写一些文档、示例等,欢迎您提交pull-requests。