laiz / laiz-db
对象关系映射库
v1.0.3
2013-10-24 04:16 UTC
Requires
- php: >=5.3.3
- zendframework/zend-http: 2.1.*
This package is auto-updated.
Last update: 2024-09-23 19:32:03 UTC
README
使用PHP5的简单O/R映射库。
示例数据库
表
CREATE TABLE item (
item_id serial primary key,
name text not null,
opt text
);
CREATE TABLE sub_item (
sub_item_id serial primary key,
item_id int references item(item_id),
name text not null
);
使用方法
初始化:
$db = new Laiz\Db\Db();
$db->setDsn('pgsql:host=localhost dbname=mydb user=myuser password=pass')
->setConfigFile('writable/config.ini');
->setAutoConfig(true)
->setVoPrefix('Vo_');
选择
$item = $db->from('Item')
->eq(array('name' => 'Name 1'))
->result();
$itemAndSubItems = $db->from('Item')
->join('SubItem')
->eq(array('Item.name' => 'Name 1'))
->result();
$items = $db->from('Item')
->like(array('Item.name', 'a'))
->order('itemId')
->iterator();
更新
$item->name = 'Item 2';
$db->save($item);
插入
$subItem = $db->generateVo('SubItem');
$subItem->itemId = $item->itemId;
$subItem->name = 'Sub Name 1';
$db->save($subItem);
删除
$db->delete($subItem);
分页器
$pager = new Laiz\Db\Pager($items, 10);
$pagerHtml = $pager->getHtml();
注意
因此,从迭代器返回的对象具有变量的引用。以下代码按预期工作
$iterator = $db->from('Goods')->iterator();
$sum = 0;
foreach ($iterator as $goods){
$sum += $goods->price;
}
echo $sum;
但是,以下代码按预期不工作
$iterator = $db->from('Goods')->iterator();
$arr = array();
foreach ($iterator as $goods){
$arr[] = $goods;
}
$sum = 0;
foreach ($arr as $goods){
$sum += $goods->price;
}
echo $sum;
如果您将vo保存到数组或其他变量中,需要调用setCloneVo方法
$iterator = $db->from('Goods')->iterator()->setCloneVo(true);
$arr = array();
foreach ($iterator as $goods){
$arr[] = $goods;
}
...