php mongo orm,让Lavarel Eloquent ORM 支持 mongodb数据库

Laravel 的 Eloquent ORM 提供了漂亮、简洁的 ActiveRecord 实现来和数据库的互动。 每个数据库表会和一个对应的「模型」互动。

组件说明

业务侧还在用PHP5.3,composer.json文件内容如下:{

"require": {

"illuminate/database": "4.1.*",

"jenssegers/mongodb": "1.3.*"

}

}

实际安装的版本如下。

使用方式:配置文件conf/database.php新增mongodb配置。<?php

$database = array(

'mongodb' => array(

'driver' => 'mongodb',

'host' => '100.98.173.13',

'port' => 5566,

'database' => 'bigdata',

),

)

自动加载数据库,新增mongodb数据库类型。include conf/database.php;

$capsule = new Capsule;

// 支持mongodb数据库,如果name是mongodb,交给Jenssegers\Mongodb\Connection来处理

$capsule->getDatabaseManager()->extend('mongodb', function($config)

{

return new Jenssegers\Mongodb\Connection($config);

});

foreach ($database[$env] as $name => $conf) {

// 创建链接

$capsule->addConnection($conf, $name);

}

// 设置全局静态可访问

$capsule->setAsGlobal();

// 启动Eloquent

$capsule->bootEloquent();

model继承Jenssegers\Mongodb\Model.<?php

class UserModel extends Jenssegers\Mongodb\Model {

/**

* table

*

* @var string

*/

protected $table = 'users';

/**

* connection

*

* @var string

*/

protected $connection = 'mongodb';

}

上面是按网上找到的资料配置的,然后跑起来后报PHP Fatal error: Call to a member function connection() on a non-object in /web/xxx/vendor/illuminate/database/Illuminate/Database/Eloquent/Model.php on line 2810的错误。

断点定位了半天,才解决掉问题,这里记录一下。

先看下2810行的代码是什么。2808 public static function resolveConnection($connection = null)

2809 {

2810 return static::$resolver->connection($connection);

2811 }

注意这里用的是static::$resolver,关于php的static和self的区别可以参考这篇文章,这里不做过多描述。

php中self与static的区别

解决方法:

修改vendor\jenssegers\mongodb\src\Jenssegers\Mongodb\Model.php文件,注释下面这行代码。protected static $resolver;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值