一个项目,一般不仅有 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();