Хочу работать с MongoDB через Moloquent без Laravel. Установил через composer require moloquent/moloquent, создал index.php, написал следующий код:
<?php
require_once( __DIR__ . '/vendor/autoload.php' );
use Illuminate\Database\Capsule\Manager as Capsule;
// use Illuminate\Events\Dispatcher;
// use Illuminate\Container\Container;
use Moloquent\Eloquent\Model as Eloquent;
$mongoconfig = [
'driver' => 'mongodb',
'host' => 'localhost',
'port' => 27017,
'database' => 'test',
'username' => 'mongoadmin',
'password' => '12345678'
'options' => [
'db' => 'admin'
]
];
$capsule = new Capsule;
$capsule->getDatabaseManager()->extend( 'mongodb', function( $config )
{
return new \Moloquent\Connection( $mongoconfig );
});
class User extends Eloquent {
// protected $connection = 'mongodb';
protected $collection = 'posts';
}
var_dump( User::count() );
Ругается вот таким словами:
2017/07/03 05:06:48 [error] 4379#4379: *8 FastCGI sent in stderr: "PHP message: PHP Fatal error: Uncaught Error: Call to a member function connection() on null in /var/www/test/vendor/illuminate/database/Eloquent/Model.php:1041
Stack trace:
#0 /var/www/test/vendor/illuminate/database/Eloquent/Model.php(1007): Illuminate\Database\Eloquent\Model::resolveConnection('mongodb')
#1 /var/www/test/vendor/moloquent/moloquent/src/Eloquent/Model.php(558): Illuminate\Database\Eloquent\Model->getConnection()
#2 /var/www/test/vendor/illuminate/database/Eloquent/Model.php(814): Moloquent\Eloquent\Model->newBaseQueryBuilder()
#3 /var/www/test/vendor/illuminate/database/Eloquent/Model.php(798): Illuminate\Database\Eloquent\Model->newQueryWithoutScopes()
#4 /var/www/test/vendor/illuminate/database/Eloquent/Model.php(1357): Illuminate\Database\Eloquent\Model->newQuery()
#5 /var/www/test/vendor/moloquent/moloquent/src/Eloquent/Model.php(590): Illuminate\Database\Eloquent\Model->__call('count', Array)
#6 /var/www/test/vendor/illuminate/database/Eloquent/Model.php(1369): Moloquent\Eloquent\M" while reading response header from upstream, client: 192.168.33.1, server: test.dev, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.0-fpm.sock:", host: "test.dev"
Подключение валидное, база test существует, коллекцияposts существует, в ней 1 запись для теста. Что я делаю не так?
Инфу брал частично здесь и здесь.
P.S. Выбор Moloquent не критичен, но желателен. Хотелось бы разобраться на будущее вообще в подходе к такого рода решениям, потому что Moloquent далеко не единственный модуль, который хотелось бы использовать отдельно. Однако, чтобы не выходить за рамки данного вопроса, прошу помощи только по Moloquent, в остальном попробую потом разобраться сам, ориентируясь на данный вопрос. Спасибо за понимание.
P.P.S. Закомментированные строки я оставил чтобы показать с чем я пробовал "играться" и не получилось.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости