segakgd / mongo_repository
Simple MongoDB repository manager
1.0.0
2025-08-26 09:54 UTC
Requires
- php: >=8.2
- mongodb/mongodb: ^2.1
- vlucas/phpdotenv: ^5.6
This package is not auto-updated.
Last update: 2025-08-27 08:36:59 UTC
README
Пакет добавляет обёртку в виде репозиториев и моделей, для работы с mongo data base. В основе лежит стандартный пакет для mongodb (https://github.com/mongodb/mongo-php-library)
Установка
composer require segakgd/mongo_repository
Пример использования
Описываем UserModel
class UserModel extends AbstractMongoModel { #[MongoField] public string $name; #[MongoField] public int $companyId; public static function getCollectionName(): string { return 'user'; } }
Описываем репозиторий для модели UserModel
<?php use Segakgd\MongoRepository\AbstractMongoModel; use Segakgd\MongoRepository\AbstractMongoRepository; use Segakgd\MongoRepository\Attributes\MongoField; use Segakgd\MongoRepository\MongoCollectionManager; /** * @method UserModel|null find(string $oid) * @method array<UserModel> findAll() * @method array<UserModel> findBy(array $criteria = [], array $options = []) * @method UserModel|null findOneBy(array $criteria = [], array $options = []) * @method int count(array $criteria = []) * @method UserModel create(UserModel $model) * @method UserModel update(UserModel $model) * @method void delete(UserModel $model) */ class UserRepository extends AbstractMongoRepository { public function __construct(MongoCollectionManager $manager) { parent::__construct($manager, UserModel::class); } }
Используем
$connection = new MongoCollectionManager( 'mongodb://root:password@localhost:27017', // подключение 'mongo_db' // название базы ); $repository = new UserRepository($connection); $companyId = 999; $data = $repository->findOneBy(['companyId' => $companyId]); var_dump($data->toData());
Подключение в Symfony
Segakgd\MongoRepository\MongoCollectionManager: arguments: $uri: '%env(MONGODB_URL)%' $database: '%env(MONGODB_DB)%'