有没有办法在Laravel 5中使用没有ORM的MongoDB?

时间:2015-05-11 04:33:55

标签: mongodb laravel-5

基本上,我认为Eloquent(就此而言,任何ORM)都是开销,因为MongoDB本身处理文档对象。 我希望使用本机PHP MongoDB代码与应用程序范围的数据库连接对象,以获得更好的性能。 任何图书馆或实现这一目标的简单方法?

1 个答案:

答案 0 :(得分:2)

我已经阅读了一些内容,并使用PHP MongoDB驱动程序和自定义“模型”代码,基类如下所示:

AppModel.php

<?php

namespace App;

use MongoClient;
use MongoId;
use Log;

class AppModel {

    public $collection;

    public function __construct() {
        $mongo = new MongoClient();
        $model_name = (new \ReflectionClass($this))->getShortName();
        $collection_name = str_plural(strtolower($model_name));
        $this->collection = $mongo->selectCollection('proj_zabbit', $collection_name);
    }

    public function findById($id) {
        return $this->collection->findOne(array(
            '_id' => new MongoId($id)
        ));
    }

    // more wrapper functions ..

}

扩展模型类:

<?php

namespace App;

class Message extends AppModel {

}

在控制器中:

<?php namespace App\Http\Controllers;

use App\Message;

class MessagesController extends Controller {

    public function __construct()
    {
        $this->Message = new Message;
    }

    public function get()
    {
        $id = Input::get('id');
        $message = $this->Message->findById($id);
        return $message;
    }

}