mawelous / yamop-laravel
作为 Laravel 组件的另一个 MongoDB ODM。没有不必要的功能,易于连接。
Requires
- php: >=5.3.0
- mawelous/yamop: 0.2.0
This package is not auto-updated.
Last update: 2024-09-28 12:39:06 UTC
README
作为 Laravel 组件的另一个 MongoDB ODM
这是什么?
这是另一个开源且非常简单的 MongoDB ODM,适用于 Laravel 4。它的工作方式类似于标准的 MongoDB PHP 扩展接口,但返回对象而不是数组(作为 ODM)。查询保持不变。其最酷的功能之一是连接,允许您查询相关对象。这个 Laravel 版本基于 Yamop,它可以包含在任何 PHP 项目中。除了标准功能外,它还支持基于 Laravel 的身份验证。
要求
- PHP 5.3+
- PHP MongoDB 扩展
- Laravel 4
安装
在 composer.json
文件中的 require
键下添加以下内容
"mawelous/yamop-laravel": "dev-master"
保存并运行 Composer 更新命令
$ composer update
完成此操作后,在数据库配置中将 mongo
添加到您的配置中
'mongo' => array( 'host' => 'host', 'port' => 37847, 'database' => 'db', 'user' => 'user', 'password' => 'pass' ),
现在我们需要让 Laravel 了解这个新的服务提供者。要做到这一点,请将以下内容添加到 config\app.php
文件中的 providers
... 'Illuminate\View\ViewServiceProvider', 'Illuminate\Workbench\WorkbenchServiceProvider', ... 'Mawelous\YamopLaravel\YamopLaravelServiceProvider',
Yamop 类的别名非常有用。在 config\app.php
文件中的 aliases
数组中添加它们
... 'Validator' => 'Illuminate\Support\Facades\Validator', 'View' => 'Illuminate\Support\Facades\View', ... 'Mapper' => 'Mawelous\YamopLaravel\Mapper', 'Model' => 'Mawelous\YamopLaravel\Model',
要使用 Yamop,您现在只需要从您的新或现有模型中扩展 Yamop 别名 Model
class Article extends Model { protected static $_collectionName = 'articles'; }
就到这里了!
使用
有关使用示例和进一步说明,请参阅 Yamop 文档。在这个 Laravel 版本中,您还可以使用安装期间注册的 Mapper
和 Model
别名。以下是一个分页示例。
分页
Yamop for Laravel 支持开箱即用的分页。它实现了 _createPaginator
方法,并扩展了 getPaginator
,这样您只需要将每页的项目数传递给方法。第二个参数是当前页码,第三个参数是页码参数名,两者都是可选的。
User::getMapper() ->find( 'status' => [ '$ne' => User::STATUS_DELETED ] ) ) ->sort( [ $field => $direction ] ) ->getPaginator( $perPage ); //or User::getMapper() ->find() ->getPaginator( $perPage, $currentPage, 'commentsPage' );
身份验证
Laravel 的 Yamop 包支持原生 like 身份验证。您必须首先将 Yamop 的 Mawelous\YampoLaravel\User
扩展到您的 User
模型中
class User extends Mawelous\YamopLaravel\User { protected static $_collectionName = 'users'; }
在 auth\config.php
中将驱动程序更改为 yamop
。
... 'driver' => 'yamop', ...
现在您可以像标准身份验证一样实现它
class AuthController extends BaseController { public function getLogin() { return View::make( 'auth.login' ); } public function postLogin() { if( Auth::attempt( [ 'nickname' => Input::get( 'nickname' ), 'password' => input::get( 'password' ) ] ) ) { return Redirect::intended( 'dashboard' ); } else { return Redirect::to( '/login' )->with( 'login_failed', true ); } } }
问题
如有任何问题或疑问,请 在此处报告
许可证
Yamop 是免费软件,根据 MIT 许可证 的条款分发