Write the Code. Change the World.

8月 09

一个项目,一般不仅有 mysql 数据库,还会有 redis、mongodb 等数据库。那 下边记录下 laravel 中配置和使用 mongodb。

准备

安装 mongdb 和 mongdb 扩展

# 最快最简单的安装方式
pecl install mongodb

# 在 php.ini 中配置 mongodb

# 先找到 php.ini 的位置
php -i | grep php.ini

# 开始配置
vim php.ini
# 加入 extension=mongodb.so

# 重启
/etc/init.d/php-fpm restart

# 看看扩展
php -m |grep mongodb

项目中

https://github.com/jenssegers/laravel-mongodb

composer require jenssegers/mongodb

在 config/database.php 的 connections 中配置

        'mongodb' => [
            'driver' => 'mongodb',
            'host' => env('MONGO_DB_HOST', '127.0.0.1'),
            'port' => env('MONGO_DB_PORT', 27017),
            'database' => env('MONGO_DB_DATABASE', 'homestead'),
            'username' => env('MONGO_DB_USERNAME', 'homestead'),
            'password' => env('MONGO_DB_PASSWORD', 'secret'),
            'options' => [
                'database' => env('MONGO_DB_AUTHENTICATION_DATABASE', 'admin'), // required with Mongo 3+
            ],
        ]

        # 或
        'mongodb' => [
            'driver' => 'mongodb',
            'dsn' => env('MONGO_DB_DSN'),
            'database' => env('MONGO_DB_DATABASE', 'homestead'),
        ],

在 .env 中进行 MONGO_DB_DSN 和 MONGO_DB_DATABASE 配置。

使用

这里,我既使用 mysql, 也使用 mongodb。并且都使用 ORM。 mysql 是默认驱动方式。

php artisan make:model Moment

### 编辑 App\Models\Moment ,如下
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Jenssegers\Mongodb\Eloquent\Model;

class Moment extends Model
{
    use HasFactory;

    // 驱动
    protected $connection = 'mongodb';

   // 表
    protected $collection = 'detail.idc';
}

用 tinker 试试:

php artisan tinker;

use App\Models\Moment;
Moment::first();

参考

https://www.bubaijun.com/page.php?id=230