mawelous/yamop-laravel

作为 Laravel 组件的另一个 MongoDB ODM。没有不必要的功能,易于连接。

0.2.0 2013-09-25 09:08 UTC

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

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 版本中,您还可以使用安装期间注册的 MapperModel 别名。以下是一个分页示例。

分页

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 许可证 的条款分发