zizaco / mongolid-laravel
Requires
- php: ^8.0
- illuminate/auth: ^9.0 || ^10.0
- illuminate/queue: ^9.0 || ^10.0
- illuminate/support: ^9.0 || ^10.0
- leroy-merlin-br/mongolid: v3.7
Requires (Dev)
- leroy-merlin-br/coding-standard: ^3.1.0
- mockery/mockery: ^1.5.1
- orchestra/testbench: ^7.0 || ^8.0
- phpunit/phpunit: ^9.0
- v3.x-dev
- v3.7.0
- v3.6.0
- v3.5.0
- v3.4.0
- v3.3-beta2
- v3.3-beta
- v3.2.0
- v3.0.0
- v3.0.0-beta
- v2.3.0
- 2.2.7
- v2.2.6
- v2.2.5
- v2.2.4
- v2.2.3
- v2.2.2
- v2.2.1
- v2.2.0
- v2.1.1
- v2.1.0
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- v2.0.0-beta8
- v2.0.0-beta7
- v2.0.0-beta6
- v2.0.0-beta5
- v2.0.0-beta4
- v2.0.0-beta3
- v2.0.0-beta2
- v2.0.0-beta1
- v0.8.0
- v0.7.3
- v0.7.2
- v0.7.1
- v0.6beta
- v0.5beta
- v0.1beta
- dev-feat/update-mongodb-version-to-6
- dev-feat/update-mongo-5
- dev-chore/update-mongolid-version-3.1
- dev-task/rebase-v3-with-master
- dev-master / 2.1.x-dev
This package is auto-updated.
Last update: 2024-04-17 14:07:01 UTC
README
MongoLid (Laravel 包)
简介
MongoLid ODM (对象文档映射器) 提供了与 MongoDB 交互的优雅、简单实现。每个数据库集合都可以有一个相应的 "模型",用于与该集合交互。
注意:ODM 实现位于 (非 Laravel) mongolid 仓库 内。
安装
使用 composer require
安装(如果需要,请使用上面的标签)。
composer require leroy-merlin-br/mongolid-laravel
注意: Mongolid Laravel 2.0 仅支持 Laravel 5.4 及以上版本。对于旧版本,请使用以下标签:
- Laravel 4.2
"leroy-merlin-br/mongolid-laravel": "^0.7"
- Laravel 5.1
"leroy-merlin-br/mongolid-laravel": "2.0.0-beta4"
- Laravel 5.2
"leroy-merlin-br/mongolid-laravel": "2.0.0-beta6"
- Laravel 5.3
"leroy-merlin-br/mongolid-laravel": "2.0.0-beta6"
使用 beta 标签时,请确保将最小稳定性设置为 dev
(composer config minimum-stability dev
)。
注意:如果您使用 Laravel 5.5,则无需执行提供者和别名步骤。MongoLid 支持 Laravel 新的 包发现。
在您的 config/app.php
中,将 'MongolidLaravel\MongolidServiceProvider'
添加到 $providers
数组的末尾
'providers' => [ Illuminate\Translation\TranslationServiceProvider::class, Illuminate\Validation\ValidationServiceProvider::class, Illuminate\View\ViewServiceProvider::class, ... MongolidLaravel\MongolidServiceProvider::class, ],
(可选) 在 config/app.php
的末尾添加 'MongoLid' => 'MongolidLaravel\MongoLidModel'
到 $aliases
数组
'aliases' => [ 'App' => Illuminate\Support\Facades\App::class, 'Artisan' => Illuminate\Support\Facades\Artisan::class, ... 'MongoLid' => MongolidLaravel\MongoLidModel::class, ],
最后,请确保在 config/database.php
中配置数据库连接
在您的 config/database.php
的末尾粘贴以下设置,在最后一个 ];
之前
注意:它必须位于 connections
数组之外。
/* |-------------------------------------------------------------------------- | MongoDB Databases |-------------------------------------------------------------------------- | | MongoDB is a document database with the scalability and flexibility | that you want with the querying and indexing that you need. | Mongolid Laravel use this config to starting querying right now. | */ 'mongodb' => [ 'default' => [ 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT_NUMBER', 27017), 'database' => env('DB_DATABASE', 'my_database'), 'username' => env('DB_USERNAME', null), 'password' => env('DB_PASSWORD', null), ], ],
对于具有自动故障转移的集群,您需要设置包含所有 nodes
以及 replica_set
名称的 cluster
键。
'mongodb' => [ 'default' => [ 'cluster' => [ 'replica_set' => env('DB_REPLICA_SET', null), 'nodes' => [ 'primary' => [ 'host' => env('DB_HOST_A', 'host-a'), 'port' => env('DB_PORT_A', 27017), ], 'secondary' => [ 'host' => env('DB_HOST_B', 'host-b'), 'port' => env('DB_PORT_B', 27017), ], ], ], 'database' => env('DB_DATABASE', 'mongolid'), 'username' => env('DB_USERNAME', null), 'password' => env('DB_PASSWORD', null), ], ],
您可以配置所需数量的节点,节点名称(例如 primary
和 secondary
)是可选的。
注意:如果您在
config/database.php
中未指定mongodb
键,MongoLid 将自动尝试连接到 '127.0.0.1:27017' 并使用名为 'mongolid' 的数据库。
您可以可选地提供 connection_string
键来设置一个完全组装的连接字符串,这将覆盖所有其他连接选项。有关连接字符串的更多信息,请参阅 MongoDB 文档。
'mongodb' => [ 'default' => [ 'connection_string' => 'mongodb://host-a:27017,host-b:27917/mongolid?replicaSet=rs-ds123', ], ],
此外,您还可以将 options
和 driver_options
传递给 MongoDB 客户端。Mongolid 总是覆盖 driver_options
的 typeMap
配置为 array
,因为它使内部使用模型更简单。可能的 options
和 driver_options
在 MongoDB\Client
文档 中。
基本用法
要开始使用,创建一个 MongoLid 模型。模型通常位于 app/models
目录中,但您可以将它们放在任何根据您的 composer.json
文件可以自动加载的位置。
定义 MongoLid 模型
<?php namespace App; use MongolidLaravel\MongolidModel; class User extends MongolidModel { }
总之,就是这样!
要了解有关模型、CRUD操作、关系等更多内容,请参阅Read the Docs: leroy-merlin-br.github.com/mongolid。
身份验证
MongoLid Laravel附带了Laravel认证提供者。要使用它,只需将config/auth.php
中的'driver'
提供者值更改为mongolid
,并确保在model
中指定的类是一个实现了Authenticatable
契约的MongoLid模型。
'providers' => [ // ... 'users' => [ 'driver' => 'mongolid', 'model' => \App\User::class ], // ... ],
User
模型应该实现Authenticatable
接口。
<?php namespace App; use Illuminate\Contracts\Auth\Authenticatable; use MongolidLaravel\MongolidModel; class User extends MongolidModel implements Authenticatable { /** * The database collection used by the model. * * @var string */ protected $collection = 'users'; /** * Get the name of the unique identifier for the user. * * @return string */ public function getAuthIdentifierName() { return '_id'; } /** * Get the unique identifier for the user. * * @return mixed */ public function getAuthIdentifier() { return $this->_id; } /** * Get the password for the user. * * @return string */ public function getAuthPassword() { return $this->password; } /** * Get the token value for the "remember me" session. * * @return string */ public function getRememberToken() { return $this->remember_token; } /** * Set the token value for the "remember me" session. * * @param string $value */ public function setRememberToken($value) { $this->remember_token = $value; } /** * Get the column name for the "remember me" token. * * @return string */ public function getRememberTokenName() { return 'remember_token'; } }
现在,要登录用户到您的应用程序,您可以使用auth()->attempt()
方法。您可以使用有关认证的任何方法。
队列失败作业提供者
Mongolid Laravel将Laravel队列失败作业提供者替换为使用集合而不是表。要配置提供者,请更新queue.php
中的failed
键,以包含collection
名称。
'failed' => [ 'database' => 'mongodb', 'collection' => 'failed_jobs', ],
注意: database
键是无关紧要的。
故障排除
"PHP致命错误:类'MongoDB\Client'在...找不到..."
MongoDB\Client
类包含在MongoDB PHP库中,它需要MongoDB PHP驱动程序。以下是此驱动程序的安装指南。该驱动程序是用C编写的PHP扩展,由MongoDB维护。MongoLid和大多数其他MongoDB PHP库都利用它以实现快速和可靠。
即使在安装了MongoDB驱动程序后,CLI环境中也持续出现"Class 'MongoDB\Client' not found in ..."
请确保CLI环境中使用的php.ini
文件包含MongoDB扩展。在某些系统中,默认PHP安装为Web和CLI环境使用不同的.ini
文件。
在终端中运行php --ini
以检查正在使用的.ini
文件。
要检查CLI环境中的PHP是否正确导入驱动程序,请在您的终端中运行php -i | grep mongo
。您应该得到类似的输出
$ php -i | grep mongo mongodb mongodb support => enabled ...
"此包需要php >=7.0,但您的PHP版本(X.X.X)不满足此要求。"
Mongolid Laravel的新版(和改进版)2.0需要php7。如果您正在寻找旧的PHP 5.x版本或其他Laravel版本,请转到v0.8分支。
许可协议
MongoLid和MongoLid Laravel是免费软件,根据MIT许可证的条款分发。部分代码基于Taylor Otwell和laravel/framework上的工作,该框架也是根据MIT许可证分发的免费软件。
更多信息
Mongolid由Leroy Merlin Brazil团队自豪地构建。查看所有贡献者。
如有任何问题,请随时联系我们。
如有任何问题,请在此处报告。