thinkphp mongo模型数据库配置

今天尝试使用thinkphp中的mongo模型,发现总是会报错

Call to a member function selectCollection() on a non-object

找了一下原因,发现是配置文件未导入,导致无法连接数据库和实例化模型。看了一下配置文件,并没有任何错误,配置文件如下

return array(
//‘配置项‘=>‘配置值‘
‘DB_CONFIG‘ => array(‘DB_TYPE‘ => ‘mongo‘,
‘DB_HOST‘ => ‘localhost‘,
‘DB_NAME‘ => ‘mydb‘,
‘DB_USER‘ => ‘‘,
‘DB_PWD‘ => ‘‘,
‘DB_PORT‘ => ‘27017‘,
‘DB_PREFIX‘ => ‘‘,
‘DB_CHARSET‘=> ‘utf8‘
)
);

model中:

protected $connection = ‘DB_CONFIG‘;

于是改用另外一种写法,model中直接定义,发现居然成功了

protected $connection = array(‘DB_TYPE‘ => ‘mongo‘,
‘DB_HOST‘ => ‘localhost‘,
‘DB_NAME‘ => ‘mydb‘,
‘DB_USER‘ => ‘‘,
‘DB_PWD‘ => ‘‘,
‘DB_PORT‘ => 27017,
‘DB_PREFIX‘ => ‘‘,
‘DB_CHARSET‘=> ‘utf8‘
);

继续尝试将配置文件改为:

return array(
//‘配置项‘=>‘配置值‘
‘DB_TYPE‘ => ‘mongo‘,
‘DB_HOST‘ => ‘localhost‘,
‘DB_NAME‘ => ‘mydb‘,
‘DB_USER‘ => ‘‘,
‘DB_PWD‘ => ‘‘,
‘DB_PORT‘ => ‘27017‘,
‘DB_PREFIX‘ => ‘‘,
‘DB_CHARSET‘=> ‘utf8‘
);

删除了DB_CONFIG的定义,直接返回,发现也可以成功连接。

不清楚是不是对mongo模型,tp不支持第一种配置方法,但是文档中确实是有这种配置方法的,而且对mysql也是可以正常使用的

时间: 2024-10-30 11:13:58

thinkphp mongo模型数据库配置的相关文章

ThinkPHP的主从数据库配置

Thinkphp 框架本身是支持读写分离的,如何做呢? 最简单的做法是在配置文件中修改: PHP代码 'DB_TYPE'=> 'mysql', 'DB_DEPLOY_TYPE' => 1,  //开打支持多服务器 'DB_RW_SEPARATE'=>true, //读写<strong>分离</strong>分开 'DB_HOST'=> '192.168.100.78,192.168.100.60', // 数据库服务器地址 master(写)/slave(读

ThinkPHP 的模型使用对数据库增删改查(五)

原文:ThinkPHP 的模型使用对数据库增删改查(五) ThinkPHP 的模型使用 // 直接连接数据库,但是得先去配置文件中配置下才行 class IndexAction extends Action { public function addDB(){ //对应数据库的表 ,一定要对应数据库的表名  大小没关系 $user =new Model('Leyangjun'); //$user = M('Leyangjun');  //等同上面的new Model() $arr = $user

ThinkPHP讲解(五)——数据库配置及Model数据模型层、查询

数据库配置 在TP框架中要进行连接数据库操作,要进行配置 要在convertion.php中找到“数据库配置”,并复制到项目配置文件config.php中 Model模型层制作 model:数据库中每张表对应一个模型       类名就是表名,类里面的成员变量就是列名       把一张表对应一个类,其中一条数据对应一个对象 如果我们对该表的模型没有特殊操作的话可以不用建立该模型 现在要制作一个最简单的model模型InfoModel.class.php <?php namespace Home

thinkphp之切换数据库

1.数据库切换 原因:在我们实际的项目开发中,经常会遇到一个项目使用多个数据库,那么在使用thinkphp框架的时候,存在使用过程中数据库转换使用的问题,或者多个数据库同时使用的问题,接下来一起研究研究如何切换数据库. 首先,我们在使用tp框架的时候会预先定义数据库连接和实例化的时候指定数据库连接,这样我们只能预定义连接一个数据库,然而我们还可以在模型操作过程中动态的切换数据库,支持切换到相同和不同的数据库类型. 使用方法: Model->db("数据库编号","数据库

ThinkPHP 的模型使用详细介绍--模型的核心(七)

原文:ThinkPHP 的模型使用详细介绍--模型的核心(七) 注意:本节是ThinkPhp框架对数据操作的核心处理部分 大家还是在这里看清楚可以将其剪切放到代码编辑器中查看 本章节给大家着重介绍模型的: 一.普通查询方式    . 二.表达式查询方式 . 三.区间查询      .  四.统计查询  .    五.SQL直接查询 回顾初步模型的-"增删改查": // 直接连接数据库,但是得先去配置文件中配置下才行 class IndexAction extends Action {

thinkphp实现多数据库操作

这篇文章主要介绍了ThinkPHP实现多数据库连接的解决方法,需要的朋友可以参考下 ThinkPHP实现连接多个数据的时候,如果数据库在同一个服务器里的话只需要这样定义模型: ? 1 2 3 class MembersModel extends Model{ protected $trueTableName = 'members.members'; //数据库名.表名(包含了前缀) } 然后就可以像D("Members");这样实例化模型,像普通模型那样操作了.但后来发现他的数据库在两

ThinkPHP 框架模型

本文和大家分享的主要是ThinkPHP 框架模型相关内容,一起来看看吧,希望对大家学习php有所帮助. 1 在MainController.class.php 控制器中有一个test的方法,同时还有一个deng的方法,我想在test方法中使用deng方法 表示为 <?phpnamespace Home\Controller;use Think\Controller;class MainController extends controller{ public function test() {

thinkphp关联模型的用法

HAS_ONE(值得注意的是,这是主动关联,外键必须是被关联的表): 1 <?php 2 namespace Home\Model; 3 use Think\Model\RelationModel; 4 class TagModel extends RelationModel{ 5 protected $_link =array( 6 'artag'=>array(//关联的数据表 7 'mapping_type'=>self::HAS_ONE,//一对一 8 'class_name'

Django模型-数据库操作

前言 前边记录的URLconf和Django模板全都是介绍页面展示的东西,也就是表现层的内容.由于Python先天具备简单而强大的数据库查询执行方法,Django 非常适合开发数据库驱动网站. 这篇开始,进入到了Django模型,也就是数据库操作. 自带 Sqlite3 数据库查询方式 为了简单,使用Python自带的Sqlite3数据库进行实例说明. 先看一个传统的数据库操作示例: 1 from django.shortcuts import render 2 import sqlite3 3