链式操作
一、获取一条记录
$db = Db::connect('timo');
$user = $db->table('user')->where('id', 394835)->row();
//指定字段
$user = $db
->table('user')
->fields('id, name, avatar')
->where(['id' => 394835])
->row();
二、获取多条记录
获取全部
$users = $db
->table('user')
->where(['certified' => 5, 'grade' => ['between', 2, 5]])
->select();
限制条数
$users = $db->table('user')->where('id', '>', 5)->limit(10)->select();
三、分页获取
$page = ['p' => 1, 'limit' => 20];
$users = $db
->table('user')
->where(['certified' => 5, 'grade' => ['between', 2, 5]])
->order('id DESC')
->page($page)
->select();
return App::result(0, 'ok', [
'users' => $users,
'page' => $page
]);
page说明
page里面的参数是引用传递,查询之后$page会在原来的基础上增加两个元素:
$page == [
'p' => 1,
'limit' => 10,
'total' => 298,
'total_page' => 30
]
四、排序
$users = $db
->table('user')
->where('certified', 5)
->where('grade', 'between', [2, 5])
->order('grade DESC, id DESC')
->select();
五、分组
$users = $db
->table('user')
->fields('grade, count(*) num')
->where('certified', 5)
->where('grade', 'between', [2, 5])
->group('grade')
->select();
六、获取一列
返回某列值的数组
$users = $db
->table('user')
->where('certified', 5)
->where('grade', 'between', [2, 5])
->column('nickname');
//返回值如:
Array
(
[0] => timo900
[1] => timor
[2] => oky
)
返回以某个字段的值作为键,指定字段的值作为值的数组
$users = $db
->table('user')
->where('certified', 5)
->where('grade', 'between', [2, 5])
->column('nickname', id);
//返回值如:
Array
(
[1] => timo
[3] => tommy
[4] => oky
)
返回以某个字段的值作为键的二维数组
$users = $db
->table('user')
->where('certified', 5)
->where('grade', 'between', [2, 5])
->column('nickname, avatar', id);
//返回值如:
Array
(
[1] => Array
(
[id] => 1
[nickname] => timo
[avatar] => 1234567890.jpg
)
[3] => Array
(
[id] => 3
[nickname] => tommy
[avatar] => b344.jpg
)
[4] => Array
(
[id] => 4
[nickname] => oky
[avatar] => 3984N.jpg
)
)
七、获取值
$nickname = UserModel::where('id', 3)->value('nickname');
//返回值如:tommy
八、关联查询
join($table, $condition, $type = 'LEFT')
INNER JOIN
LEFT JOIN
RIGHT JOIN
FULL JOIN
第三个参数控制,默认LEFT JOIN,
$user = $db->table('user')->alias('u')
->fields('u.id, u.nickname, i.school')
->join('user_info i', 'u.id = i.uid')
->where('u.id', '<', 3)
->select();
var_dump($db->getLastSql());
// SELECT u.id, u.nickname, i.school FROM `user` u LEFT JOIN user_info i ON u.id = i.uid WHERE `u`.id < 3