使用Tp框架已经有5个版本了,关于Mysql和mongodb的同时使用,tp框架一直是蜻蜓点水,说的很不到位,相比Yii框架来说,mongodb的拓展很弱。我就结合TP官方提供的mongodb类进行了一个拓展和修改,可以在tp中同时使用。
1 在Tp公共的配置文件Conf目录下建立一个别名文件alias.php(和config.php同一个目录下)
我的别名文件配置如下:
//别名加载文件import("Util")方式可以加载文件和类库
return array(
'Util' =>COMMON_PATH.'librarys/Util.php',//加载common/librarys下的文件
'Hgmongodb' =>COMMON_PATH.'extensions/mongodb/Hgmongodb.php',//加载mongo
);
2 在config.php配置文件下的目录中建立一个params.php然后配置
//网站其他拓展参数
return array(
'Mongodb'=>array(
'hostname'=>'127.0.0.1',
'hostport'=>'27017',
'database'=>'bjdaheige',
'username'=>'',
'password'=>'',
'coll_prefix'=>'dv_',
'params'=>array('connect'=>true),
'db_deploy_type' => 1,//是否注销连接
),
);
3 在config.php配置文件中,加载导入的自定义配置文件
//拓展其他参数,比如Mongodb
'LOAD_EXT_CONFIG'=>'params',
这里的Mongodb就可以用C('Mongodb')方式读取
4 在具体的控制器的动作方法中,我们可以这么使用:
//测试mongodb和import别名导入文件
import("Hgmongodb");
$mongo = new Hgmongodb(C('Mongodb'));
$mongo->connect();//连接mongodb,这是一个触发式的连接
$user = $mongo->findOne(array('table'=>'we_user','limit'=>1,'where'=>array('we_account_id'=>100102034)),array('subscribe_time','nickname'));
$user2 = $mongo->findOne(array('table'=>'we_user','limit'=>1,'where'=>array('remark_name'=>array('like','布布'))),array('subscribe_time','nickname'));
var_dump($user);
var_dump($user2);die;
运行结果:
array (size=3)
'_id' =>
object(MongoId)[11]
public '$id' => string '545c5e1fa724e9043f000008' (length=24)
'nickname' => string '任勇铨' (length=9)
'subscribe_time' => int 1396253215
array (size=3)
'_id' =>
object(MongoId)[13]
public '$id' => string '545c5e21a724e9043f00000a' (length=24)
'nickname' => string '布布' (length=6)
'subscribe_time' => int 1395583303
Hgmongodb.zip ( 6.11 KB 下载:32 次 )
AD:真正免费,域名+虚机+企业邮箱=0元