0

我正在尝试对使用 Lithium 存储在 mongoDb 中的一些数据进行全文搜索。

这是我尝试在控制器中执行此操作的方式:

$mongodb = Connections::get('default')->connection;
$results = Page::connection()->connection->command(array("text" => "Page", 'search' => "term" ));

我也试过:

$results = Page::connection()->connection->command(array("text" => "Page", 'search' => "term" ));

但是,这两个都返回:致命错误:在非对象上调用成员函数 command()

我究竟做错了什么?

编辑:

我应该补充一点,在 Page 上的一个简单查询工作得很好。例如:

$results = Page::find('all');

确实像我期望的那样返回一个包含 pages 集合中所有文档的数组。

更新 2:

我从 WAMP 服务器运行所有这些。我今天尝试从 linux 服务器运行它,但仍然得到相同的错误。我真的被这个难住了,可以使用一些帮助。有人有想法么?

这是现在的 Page 模型:

<?php
namespace app\models;

use lithium\data\Connections; //added during debugging
use lithium\data\source\MongoDb; //added during debuging

class Page extends \lithium\data\Model {

}
?>

这是我的连接:

 Connections::add('default', array(
        'type' => 'MongoDb',
        'host' => '192.168.48.128',
        'database' => 'my_collection'
 ));
4

2 回答 2

2

我是这样做的:

$plugins = Plugins::connection()->connection->command([
    'text' => 'plugins',
     'search' => $this->request->query['q']
]);
return compact('plugins');

所以我建议检查您的配置 - 您的模型是否正常返回其他数据?连接配置是否正确?

于 2013-09-24T10:22:01.210 回答
0

得到帮助来解决这个问题......在这里发布以供其他人参考。

正确的称呼方式是:

$conn = Model::connection();
$db = $conn->selectDB('db');
$result = $db->command(array(...

以这种方式完美运行。

于 2013-09-26T02:24:42.243 回答