哈瓦那辣椒 / 杂货
此包最新版本(v0.3.8)没有可用的许可信息。
用于PHP的精美数据库库
v0.3.8
2013-07-24 06:52 UTC
Requires
- php: >=5.3
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。
快速执行迁移,尽管如果您想跟踪它,必须为它编写包装器。
第一步
您可以直接加载表并几乎轻松地处理它们,或者您可以直接从代码中创建表,从而跳过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。