我正在尝试对使用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');
返回一个数组,其中包含页面集合中的所有文档,就像我期望的那样。
更新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'
));
答案 0 :(得分:2)
我这样做:
$plugins = Plugins::connection()->connection->command([
'text' => 'plugins',
'search' => $this->request->query['q']
]);
return compact('plugins');
所以我建议您检查一下您的配置 - 您的模型是否正常返回其他数据?连接配置是否正确?
答案 1 :(得分:0)
帮助弄清楚...发布在这里供其他人参考。
调用它的正确方法是:
$conn = Model::connection();
$db = $conn->selectDB('db');
$result = $db->command(array(...
这样做时效果很好。