cimrie/slick

为 cimrie/odm 提供的流畅 ODM 元数据构建器,Doctrine MongoDB ODM 的框架集成包。

v0.2.17 2017-05-05 09:18 UTC

README

Doctrine ODM 流畅元数据类实现。受 laravel-doctrine/fluent 启发。与 cimrie/odm 无缝集成。

Laravel 配置

CImrie\Slick\SlickServiceProvider::class 添加到 config/app.php 的 'providers' 部分。遵循 cimrie/odm 的说明。

config/odm.php 中将 'meta' 设置为 CImrie\Slick\Mapping\SlickDriver::class。在 config/odm.php 中每个管理者指定一个类似的 'mappings' 数组

<?php

return [
    'managers' => [
       
        'default' => [
            // ...
            
            'meta'      => env('DOCTRINE_METADATA', \CImrie\Slick\Mapping\SlickDriver::class),
            'mappings'  => [
               MyCustomMappingClass::class 
            ]
            
            // ...
        ]
    ]
];

使用方法

要设置映射文件,您应该扩展以下类之一

  • 普通文档:CImrie\Slick\Mapping\DocumentMapping::class,
  • 嵌入文档:CImrie\Slick\Mapping\EmbeddedMapping::class,
  • 映射超类文档:CImrie\Slick\Mapping\MappedSuperclassMapping::class

在每个映射文件中,您需要指定一个 mapFor 和一个 map(Slick $builder) 方法实现。 mapFor 应该简单地返回您想要映射的文档的类名。

map(...) 应该使用提供的 $builder 变量来指定其映射。例如

<?php

use \Tests\Model\Documents\User;
use CImrie\Slick\Slick;

class CustomMapping extends \CImrie\Slick\Mapping\DocumentMapping
{
    public static function mapFor(){
        return User::class;
    }
    
    public function map(Slick $builder)
    {
        $builder->id();
        $builder->string('name');
        $builder->string('email')->unique();
        // alternatively add the unique constraint manually
        //... $builder->index()->key('email')->unique();
        
        $builder->date('joinedAt');
    }
}