|
楼主 |
发表于 2009-4-29 11:30:51
|
显示全部楼层
本帖最后由 visvoy 于 2009-4-30 11:52 编辑
【常用 LINQ to SQL for CI 例子】
from('db.user') 表示使用 config/database.php 里面的 $db['default'] 配置
如何使用多数据库?
from('db2.user') 使用 $db[2] 的数据库配置
from('db3.user') 使用 $db[3] 的数据库配置。。。以此数字类推
PHP复制代码 // 基础查询,从数据库user表取回所有列
// LINQ to SQL的in()必须以 db[DB配置序列] 开头
$query = from ('c')->in('db.user')->select('c');
// 简化:如果只有一个from数据表,可以省略所有 "c." 开头,例如:
$query = from ('c')->in('db.user')->select('id,name');
// 简化:针对一个 from 数据表,还可以省略 in() 方法,
// 此时会自动赋予 db.user 别名 me ,例如:
$query = from ('db.user')->where('id', 1)->select('id,name');
// 取得单个数据(使用first/last/next/element_at陈述)
$rs = from ('db.user')->where('id', 1)->select('*')->first();
echo $rs->username;
// 获取每个列并且输出每列内容
// count()方法将执行查询SQL动作,获得查询资源ID,和查询到的列数量
if ($query->count() < 1) {
print 'user表没有数据列';
} else {
foreach($query->lists() as $row) {
print $row->username;
}
}
// 即使没取到数据,$query->lists() 用在 foreach 里面仍然不会出错,
// 此时 $query->lists() 返回的是空数组 array()
// 条件查询,指定column取回
$q = from ('c')->in('db.user')->where('c.id', 1)->select('c.username');
// or where,使用 maybe 方法替代 orwhere 方法
$q = from ('c')->in('db.user')->where('c.id', 1)->maybe('c.username', 'myname')->select('c');
// where in
$q = from ('c')->in('db.user')->where('c.id')->in(array(1, 2, 3, 4, 5))->select('c');
// where not in,用 out 方法,使符合 out 条件的列出局
$q = from ('c')->in('db.user')->where('c.id')->out(array(6, 7, 8))->select('c');
// or where not in,用 out 方法,使符合 out 条件的列出局
$q = from ('c')->in('db.user')->maybe('c.id')->out(array(6, 7, 8))->select('c');
// like
$q = from ('c')->in('db.user')->where('c.name')->like('bob')->select ();
// or like
$q = from ('c')->in('db.user')->maybe('c.name')->like('bob')->select ();
// not like,使用differ方法
$q = from ('c')->in('db.user')->where('c.name')->differ('ana')->select ();
// or not like,使用differ方法
$q = from ('c')->in('db.user')->maybe('c.name')->differ('ana')->select ();
// orderby,descending和ascending
$q = from ('c')->in('db.user')->select('c')->orderby('c.id')->descending()->orderby('c.name')->ascending();
// groupby
$q = from ('c')->in('db.user')->select('c')->groupby('c.level');
// take 在 php 里面不延迟!!
// take 之后,LINQ 主体就变成 LINQ Record 了!注意!
// 分页,用 skip + take,下面表示略过10列,然后选8列
$q = from ('c')->in('db.user')->select('c.*')->skip(10)->take(8);
// $total_rows 是所有符合条件的列数
// $page_rows 是当前页的列数,也就是 take 能取回的列数
$page_rows = $q->count ();
// 若你想去的总列数,使用如下例子:
$total_rows = from ('c')->in('db.user')->count();
// join,支持这几种join:left/right/inner/outer/left_outer/right_outer
$q = from ('a')->in('db.A')->left('b')->join('db.B')->on('a.id=b.uid')->select('a.id, b.photo');
// delete,必须有where,否则会抛出异常,不允许以 delete 表达式清空数据表
// 当只有一个表的时候,delete可以省去参数
$q = from ('c')->in('db.A')->where('c.id', 1)->delete('c');
// kill,要清空数据表,不可以有where条件,不能与delete同时出现
// !!请谨慎使用 kill 方法!!
$q = from ('c')->in('db.A')->kill();
// insert,以下几种都可以
$q = from ('c')->in('db.A')->set(array ('name' => 'ana', 'email' => 'n/a'))->insert ();
$q = from ('c')->in('db.A')->set('name', 'ana')->set('email', 'n/a')->insert ();
$q = from ('c')->in('db.A')->insert(array ('name' => 'ana', 'email' => 'not_have'));
// update,使用格式与insert相同,但update必须有where,否则会抛出异常
$result = from ('c')->in('db.A')->where('c.id=', 1)->update(array ('name' => 'ana', 'email' => 'not_have'));
// 检查 update 是否成功,可以检测写入型SQL的执行结果(up/insert/del等)
if ($result) {
print '上面的更新成功';
} 复制代码 |
|