2、Applications/XXX/Event.php
<?php
use \ GatewayWorker\ Lib\ Gateway;
use \ GatewayWorker\ Lib\ Db;
/**
* 数据库示例,假设有个user库,里面有个user表
*/
class Event
{
/**
* 有消息时触发该方法,根据发来的命令打印2个用户信息
* @param int $client_id 发消息的client_id
* @param string $message 消息
* @return void
*/
public static function onMessage ( $client_id, $message)
{
// 发来的消息
$commend = trim( $message);
if( $commend !== ‘get_user_list‘)
{
Gateway::sendToClient( $client_id, "unknown commend\n");
return;
}
// 获取用户列表(这里是临时的一个测试数据库)
$ret = Db::instance( ‘user‘)->select( ‘*‘)->from( ‘users‘)->where( ‘uid>3‘)->offset( 5)->limit( 2)->query();
// 打印结果
return Gateway::sendToClient( $client_id, var_export( $ret, true));
}
}
数据库类使用的一些示例
配置
在Config/Db.php中配置数据库信息,如果有多个数据库,可以在Db.php中配置多个实例 例如下面配置了两个数据库实例
<?php
namespace Config;
class Db
{
// 数据库实例1
public static $db1 = array(
‘host‘ => ‘127.0.0.1‘,
‘port‘ => 3306,
‘user‘ => ‘mysql_user‘,
‘password‘ => ‘mysql_password‘,
‘dbname‘ => ‘db1‘,
‘charset‘ => ‘utf8‘,
);
// 数据库实例2
public static $db2 = array(
‘host‘ => ‘127.0.0.1‘,
‘port‘ => 3306,
‘user‘ => ‘mysql_user‘,
‘password‘ => ‘mysql_password‘,
‘dbname‘ => ‘db2‘,
‘charset‘ => ‘utf8‘,
);
}
使用方法
use \ GatewayWorker\ Lib\ Db;
$db1 = Db::instance( ‘db1‘);
$db2 = Db::instance( ‘db2‘);
// 获取所有数据
$db1->select( ‘ID,Sex‘)->from( ‘Persons‘)->where( ‘sex= :sex‘)->bindValues( array( ‘sex‘=> ‘M‘))->query();
//等价于
$db1->select( ‘ID,Sex‘)->from( ‘Persons‘)->where( "sex= ‘F‘ ")->query();
//等价于
$db1->query( "SELECT ID,Sex FROM `Persons` WHERE sex=‘M’");
// 获取一行数据
$db1->select( ‘ID,Sex‘)->from( ‘Persons‘)->where( ‘sex= :sex‘)->bindValues( array( ‘sex‘=> ‘M‘))->row();
//等价于
$db1->select( ‘ID,Sex‘)->from( ‘Persons‘)->where( "sex= ‘F‘ ")->row();
//等价于
$db1->row( "SELECT ID,Sex FROM `Persons` WHERE sex=‘M’");
// 获取一列数据
$db1->select( ‘ID‘)->from( ‘Persons‘)->where( ‘sex= :sex‘)->bindValues( array( ‘sex‘=> ‘M‘))->column();
//等价于
$db1->select( ‘ID‘)->from( ‘Persons‘)->where( "sex= ‘F‘ ")->column();
//等价于
$db1->column( "SELECT `ID` FROM `Persons` WHERE sex=‘M’");
// 获取单个值
$db1->select( ‘ID,Sex‘)->from( ‘Persons‘)->where( ‘sex= :sex‘)->bindValues( array( ‘sex‘=> ‘M‘))->single();
//等价于
$db1->select( ‘ID,Sex‘)->from( ‘Persons‘)->where( "sex= ‘F‘ ")->single();
//等价于
$db1->single( "SELECT ID,Sex FROM `Persons` WHERE sex=‘M‘");
// 复杂查询
$db1->select( ‘*‘)->from( ‘table1‘)->innerJoin( ‘table2‘, ‘table1.uid = table2.uid‘)->where( ‘age > :age‘)->groupBy( array( ‘aid‘))->having( ‘foo="foo"‘)->orderBy( array( ‘did‘))->limit( 10)->offset( 20)->bindValues(arra
y( ‘age‘ => 13));
// 等价于
$db1->query(SELECT * FROM `table1` INNER JOIN `table2` ON `table1`.`uid` = `table2`.`uid` WHERE age > 13 GROUP BY aid HAVING foo= "foo" ORDER BY did LIMIT 10 OFFSET 20[);
// 插入
$insert_id = $db1->insert( ‘Persons‘)->cols( array( ‘Firstname‘=> ‘abc‘, ‘Lastname‘=> ‘efg‘, ‘Sex‘=> ‘M‘, ‘Age‘=> 13))->query();
等价于
$insert_id = $db1->query( "INSERT INTO `Persons` ( `Firstname`,`Lastname`,`Sex`,`Age`) VALUES ( ‘abc‘, ‘efg‘, ‘M‘, 13)");
// 更新
$row_count = $db1->update( ‘Persons‘)->cols( array( ‘sex‘))->where( ‘ID=1‘)->bindValue( ‘sex‘, ‘F‘)->query();
// 等价于
$row_count = $db1->update( ‘Persons‘)->cols( array( ‘sex‘=> ‘F‘))->where( ‘ID=1‘)->query();
// 等价于
$row_count = $db1->query( "UPDATE `Persons` SET `sex` = ‘F‘ WHERE ID=1");
// 删除
$row_count = $db1->delete( ‘Persons‘)->where( ‘ID=9‘)->query();
// 等价于
$row_count = $db1->query( "DELETE FROM `Persons` WHERE ID=9");
Gateway/Worker模型 数据库使用示例
标签:
查看更多关于Gateway/Worker模型 数据库使用示例的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did118746