Laravel mongodb & MySQL 使用随笔

Outline - 概述

在laravel 同时使用mongodb和MySQL
1、laravel v5.3.11
2、mongodb v3.2.29
3、jenssegers/laravel-mongodb v3.1.0-alpha

Install package - 安装

主要安装jenssegers/laravel-mongodb

1、下载对应版本

"require": {
        "jenssegers/mongodb": "3.1.0-alpha"
    },
composer update

注:遇到以下报错, 则是没有找到PHP的mongodb扩展,请先安装mongodb扩展后再次composer

Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - mongodb/mongodb 1.0.3 requires ext-mongodb ^1.1.0 -> the requested PHP extension mongodb is missing from your system.
    - mongodb/mongodb 1.0.2 requires ext-mongodb ^1.1.0 -> the requested PHP extension mongodb is missing from your system.
    - mongodb/mongodb 1.0.1 requires ext-mongodb ^1.1.0 -> the requested PHP extension mongodb is missing from your system.
    - mongodb/mongodb 1.0.0 requires ext-mongodb ^1.1.0 -> the requested PHP extension mongodb is missing from your system.
    - jenssegers/mongodb v3.1.0-alpha requires mongodb/mongodb ^1.0.0 -> satisfiable by mongodb/mongodb[1.0.0, 1.0.1, 1.0.2, 1.0.3].
    - Installation request for jenssegers/mongodb 3.1.0-alpha -> satisfiable by jenssegers/mongodb[v3.1.0-alpha].

配置

1、config/app.php - Service Provider

providers追加:
Jenssegers\Mongodb\MongodbServiceProvider::class,

aliases追加:
'Moloquent' => Jenssegers\Mongodb\Eloquent\Model::class,
//Moloquent 使用mongodb的Model继承

2、config/database.php

'default' => env('DB_CONNECTION', 'mongodb'), //默认数据库为mongo

connections 追加:
'mongodb' => [        //MongoDB
            'driver'   => 'mongodb',
            'host'     => '10.2.20.46',
            'port'     => 10001,
            'username' => '',
            'password' => '',
            'database' => 'userbehavior',  //demodb
            'options' => []
        ],

3、Model

*使用mongodb的Model 中的collection 相当于MySQL中的表名设置:

protected $collection = 'table';

主键是默认的_id

*不使用mongodb的Model添加

protected $connection = 'mysql';

或者修改/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php
中的

//protected $connection;
protected $connection = 'mysql';

4、Query Builder

mongodb的操作可以使用laravel封装好的查询构造器等等
需要注意的是:
DB:table(''); => DB:collection('')
详见:https://github.com/jenssegers/laravel-mongodb/tree/v3.1.0-alpha
posted @ 2016-09-29 16:30  zhaokunqiu  阅读(6677)  评论(0编辑  收藏  举报