ThinkPhp框架中使用mongodb数据库配置报错Call to a member function selectCollection() on a non-object
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ThinkPhp框架中使用mongodb数据库配置报错Call to a member function selectCollection() on a non-object相关的知识,希望对你有一定的参考价值。
TP3.1的解决方法就是如楼上所说,需要实例化mong数据库的模型。
so 有两种方式:
直接在使用的方法内实例化MongoModel类;
写一个model专门继承MongoModel,把需要连mongo的操作或方法都丢里面去,然后在需要的页面中D()一下这个model中的某一方法即可.
如下图代码:
参考技术A 我也遇到了同样问题、 你的问题最后是如何解决的?问题已经解决,在lib/model下的indexmodel.class.php文件里继承的Model改为MongoModel:
class IndexModel extends Model ... 改成 class IndexModel extends MongoModel ... 参考技术B 没有实例化对象:
我出现这个错误的解决方案是,在实例化对象时用 $mongo = new mongoModel('Test');
而用ThinkPHP内置的D和M实例化不了 参考技术C 父类Controller里边是有一个构造函数的,我只知道你这样定义你的构造函数肯定会报错,不过具体是不是这个错误我忘记了,解决办法是:在你的构造函数的function的第一行加入代码parent::__construct();//执行父类的构造函数,否则会被覆盖的。
thinkphp框架 链接数据库和操作数据
框架有时会用到数据库的内容,在"ThinkPhp框架知识"的那篇随笔中提到过,现在这篇随笔详细的描述下。
一、链接数据库
(1)找到模块文件夹中的Conf文件夹,然后进行编写config.php文件
(2)打开这个config.php文件,然后找到父类配置文件convention.php文件,将关于"数据库"的部分复制粘贴到config.php配置文件中
/* 数据库设置 */
‘DB_TYPE‘
=>
‘‘
,
// 数据库类型
‘DB_HOST‘
=>
‘‘
,
// 服务器地址
‘DB_NAME‘
=>
‘‘
,
// 数据库名
‘DB_USER‘
=>
‘‘
,
// 用户名
‘DB_PWD‘
=>
‘‘
,
// 密码
‘DB_PORT‘
=>
‘‘
,
// 端口
‘DB_PREFIX‘
=>
‘‘
,
// 数据库表前缀
‘DB_FIELDS_CACHE‘
=> true,
// 启用字段缓存(开发时这个要写成false)
连接成功后,然后就是新建模型文件了
二、新建模型文件(具体内容看ThinkPhp框架知识)
(1)找到模块文件夹中的Model文件夹,然后在这个文件夹新建模型文件
a) model本身就是一个类文件
b) 数据库中的每个数据表都对应一个model模型文件
c) 最简单的数据model模型类
自己的模型文件
<?php
namespace
Home\Model;
//命名空间的写法
use
Think\Model;
//使用模型
class
InfoModel
extends
Model
{
}
打开控制文件,然后写个方法,这里叫做ceshi()
public
function
ceshi()
{
$info
=
new
\Home\Model\InfoModel();
//造新对象,这里是Info模型
var_dump(
$info
);
//输出一下,看下结果
}
三、对数据库进行操作(下面的是ThinkPHP模型基础类提供的“连贯操作方法”连贯操作方法)
可以利用这个控制文件中的方法,就直接在这个方法中写了
public
function
ceshi()
{
$info
=
new
\Home\Model\InfoModel();
//造新对象,这里是Info模型
//下面是数据库操作
}
(1)查询表中的所有数据(方法:select())
返回的二维数组(关联的)
返回的数据其中的字段名称是小写,这样做数据库时尽量是小写的
$arr
=
$info
->select();
var_dump(
$arr
);
三、对数据库进行操作(下面的是ThinkPHP模型基础类提供的“连贯操作方法”连贯操作方法)
可以利用这个控制文件中的方法,就直接在这个方法中写了
1
2
3
4
5
6
|
public function ceshi() { $info = new \Home\Model\InfoModel(); //造新对象,这里是Info模型 //下面是数据库操作 } |
以上是关于ThinkPhp框架中使用mongodb数据库配置报错Call to a member function selectCollection() on a non-object的主要内容,如果未能解决你的问题,请参考以下文章