質問

I'm trying to run a full text search against some data that is stored in mongoDb using Lithium.

Here is how I am trying to do it in my controller:

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

I've also tried:

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

However, both of these return: Fatal error: Call to a member function command() on a non-object

What am I doing wrong?

EDIT:

I should add that a simple query on Page is working just fine. For instance:

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

Does return an array with all of the documents in the pages collection like I would expect it to.

UPDATE 2:

I was running all of this from WAMP server. I tried today running it from a linux server, but still got the same exact error. I am really stumped by this and could use some help. Anyone have any ideas?

here is the Page model as it sits now:

<?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 {

}
?>

Here is my connection:

 Connections::add('default', array(
        'type' => 'MongoDb',
        'host' => '192.168.48.128',
        'database' => 'my_collection'
 ));
役に立ちましたか?

解決 2

Got help to figure it out... posting here for others to reference.

proper way of calling it is:

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

Works perfectly when done this way.

他のヒント

I'm doing it this way:

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

so I'd recommend checking your configuration - is your model returning other data normally? Is the connection configuration correct?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top