Git Product home page Git Product logo

mongolid's Introduction

Mongolid

Continuous Integration Latest Stable Version Total Downloads License

About Mongolid

Easy, powerful and ultrafast ODM for PHP 8.0+ build on top of the new mongodb driver.

Mongolid supports ActiveRecord pattern.

Introduction

Mongolid ODM (Object Document Mapper) provides a beautiful, simple implementation for working with MongoDB. Each database collection can have a corresponding "Model" which is used to interact with that collection.

Note: If you are working with Laravel, take a look at mongolid-laravel repository.

Requirements

Installation

You can install the library through Composer:

$ composer require leroy-merlin-br/mongolid

Documentation

You can access the full documentation here.

License

Mongolid is free software distributed under the terms of the MIT license.

Additional information

Made with ❤ by Leroy Merlin Brazil and all contributors.

If you have any questions, feel free to contact us.

If you have any issues, please report here.

mongolid's People

Contributors

andreolvr avatar carusogabriel avatar ckd avatar diegofelix avatar djonasm avatar edukazan avatar ezandonai avatar gabrielgomes94 avatar gmsantos avatar guilhermeguitte avatar henrique221 avatar joaoferrazfs avatar manc avatar orlandocavassani avatar ravanscafi avatar rplansky avatar rpopuc avatar vagnerlg avatar vidalvasconcelos avatar vitorbari avatar williamdes avatar williancs avatar zizaco avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mongolid's Issues

Mongolid logo

@Zizaco we lost mongolid image banner :(

It links to a dropbox url, do you have a backup?

We gonna need a new banner in case you don't have the old one :(

Unable to limit fields returned

$this->account->where(['billing.status' => 'active'])->toArray(); Works Great.
$this->account->where(['billing.status' => 'active'], ['_id'])->toArray(); Not only returns invalid data (accounts with different status), but returns all the fields rather than just _id like I specified.

Am I doing something wrong here?

Support for laravel 7

I've tried to install Mongolid in a project with laravel 7 and looks like it doesn't have the support for it.

composer require leroy-merlin-br/mongolid
Using version ^2.2 for leroy-merlin-br/mongolid
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)         
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Conclusion: remove laravel/framework v7.0.8
    - Conclusion: don't install laravel/framework v7.0.8
    - leroy-merlin-br/mongolid v2.2.0 requires illuminate/container ^5.4 -> satisfiable by laravel/framework[5.6.x-dev, 5.7.x-dev, 5.8.x-dev], illuminate/container[5.4.x-dev, 5.5.x-dev, 5.6.x-dev, 5.7.17, 5.7.18, 5.7.19, 5.7.x-dev, 5.8.x-dev, v5.4.0, v5.4.13, v5.4.17, v5.4.19, v5.4.27, v5.4.36, v5.4.9, v5.5.0, v5.5.16, v5.5.17, v5.5.2, v5.5.28, v5.5.33, v5.5.34, v5.5.35, v5.5.36, v5.5.37, v5.5.39, v5.5.40, v5.5.41, v5.5.43, v5.5.44, v5.6.0, v5.6.1, v5.6.10, v5.6.11, v5.6.12, v5.6.13, v5.6.14, v5.6.15, v5.6.16, v5.6.17, v5.6.19, v5.6.2, v5.6.20, v5.6.21, v5.6.22, v5.6.23, v5.6.24, v5.6.25, v5.6.26, v5.6.27, v5.6.28, v5.6.29, v5.6.3, v5.6.30, v5.6.31, v5.6.32, v5.6.33, v5.6.34, v5.6.35, v5.6.36, v5.6.37, v5.6.38, v5.6.39, v5.6.4, v5.6.5, v5.6.6, v5.6.7, v5.6.8, v5.6.9, v5.7.0, v5.7.1, v5.7.10, v5.7.11, v5.7.15, v5.7.2, v5.7.20, v5.7.21, v5.7.22, v5.7.23, v5.7.26, v5.7.27, v5.7.28, v5.7.3, v5.7.4, v5.7.5, v5.7.6, v5.7.7, v5.7.8, v5.7.9, v5.8.0, v5.8.11, v5.8.12, v5.8.14, v5.8.15, v5.8.17, v5.8.18, v5.8.19, v5.8.2, v5.8.20, v5.8.22, v5.8.24, v5.8.27, v5.8.28, v5.8.29, v5.8.3, v5.8.30, v5.8.31, v5.8.32, v5.8.33, v5.8.34, v5.8.35, v5.8.36, v5.8.4, v5.8.8, v5.8.9].
    - leroy-merlin-br/mongolid v2.2.1 requires illuminate/container ^5.4 -> satisfiable by laravel/framework[5.6.x-dev, 5.7.x-dev, 5.8.x-dev], illuminate/container[5.4.x-dev, 5.5.x-dev, 5.6.x-dev, 5.7.17, 5.7.18, 5.7.19, 5.7.x-dev, 5.8.x-dev, v5.4.0, v5.4.13, v5.4.17, v5.4.19, v5.4.27, v5.4.36, v5.4.9, v5.5.0, v5.5.16, v5.5.17, v5.5.2, v5.5.28, v5.5.33, v5.5.34, v5.5.35, v5.5.36, v5.5.37, v5.5.39, v5.5.40, v5.5.41, v5.5.43, v5.5.44, v5.6.0, v5.6.1, v5.6.10, v5.6.11, v5.6.12, v5.6.13, v5.6.14, v5.6.15, v5.6.16, v5.6.17, v5.6.19, v5.6.2, v5.6.20, v5.6.21, v5.6.22, v5.6.23, v5.6.24, v5.6.25, v5.6.26, v5.6.27, v5.6.28, v5.6.29, v5.6.3, v5.6.30, v5.6.31, v5.6.32, v5.6.33, v5.6.34, v5.6.35, v5.6.36, v5.6.37, v5.6.38, v5.6.39, v5.6.4, v5.6.5, v5.6.6, v5.6.7, v5.6.8, v5.6.9, v5.7.0, v5.7.1, v5.7.10, v5.7.11, v5.7.15, v5.7.2, v5.7.20, v5.7.21, v5.7.22, v5.7.23, v5.7.26, v5.7.27, v5.7.28, v5.7.3, v5.7.4, v5.7.5, v5.7.6, v5.7.7, v5.7.8, v5.7.9, v5.8.0, v5.8.11, v5.8.12, v5.8.14, v5.8.15, v5.8.17, v5.8.18, v5.8.19, v5.8.2, v5.8.20, v5.8.22, v5.8.24, v5.8.27, v5.8.28, v5.8.29, v5.8.3, v5.8.30, v5.8.31, v5.8.32, v5.8.33, v5.8.34, v5.8.35, v5.8.36, v5.8.4, v5.8.8, v5.8.9].
    - leroy-merlin-br/mongolid v2.2.2 requires illuminate/container ^5.4 -> satisfiable by laravel/framework[5.6.x-dev, 5.7.x-dev, 5.8.x-dev], illuminate/container[5.4.x-dev, 5.5.x-dev, 5.6.x-dev, 5.7.17, 5.7.18, 5.7.19, 5.7.x-dev, 5.8.x-dev, v5.4.0, v5.4.13, v5.4.17, v5.4.19, v5.4.27, v5.4.36, v5.4.9, v5.5.0, v5.5.16, v5.5.17, v5.5.2, v5.5.28, v5.5.33, v5.5.34, v5.5.35, v5.5.36, v5.5.37, v5.5.39, v5.5.40, v5.5.41, v5.5.43, v5.5.44, v5.6.0, v5.6.1, v5.6.10, v5.6.11, v5.6.12, v5.6.13, v5.6.14, v5.6.15, v5.6.16, v5.6.17, v5.6.19, v5.6.2, v5.6.20, v5.6.21, v5.6.22, v5.6.23, v5.6.24, v5.6.25, v5.6.26, v5.6.27, v5.6.28, v5.6.29, v5.6.3, v5.6.30, v5.6.31, v5.6.32, v5.6.33, v5.6.34, v5.6.35, v5.6.36, v5.6.37, v5.6.38, v5.6.39, v5.6.4, v5.6.5, v5.6.6, v5.6.7, v5.6.8, v5.6.9, v5.7.0, v5.7.1, v5.7.10, v5.7.11, v5.7.15, v5.7.2, v5.7.20, v5.7.21, v5.7.22, v5.7.23, v5.7.26, v5.7.27, v5.7.28, v5.7.3, v5.7.4, v5.7.5, v5.7.6, v5.7.7, v5.7.8, v5.7.9, v5.8.0, v5.8.11, v5.8.12, v5.8.14, v5.8.15, v5.8.17, v5.8.18, v5.8.19, v5.8.2, v5.8.20, v5.8.22, v5.8.24, v5.8.27, v5.8.28, v5.8.29, v5.8.3, v5.8.30, v5.8.31, v5.8.32, v5.8.33, v5.8.34, v5.8.35, v5.8.36, v5.8.4, v5.8.8, v5.8.9].
    - leroy-merlin-br/mongolid v2.2.3 requires illuminate/container ^5.4 -> satisfiable by laravel/framework[5.6.x-dev, 5.7.x-dev, 5.8.x-dev], illuminate/container[5.4.x-dev, 5.5.x-dev, 5.6.x-dev, 5.7.17, 5.7.18, 5.7.19, 5.7.x-dev, 5.8.x-dev, v5.4.0, v5.4.13, v5.4.17, v5.4.19, v5.4.27, v5.4.36, v5.4.9, v5.5.0, v5.5.16, v5.5.17, v5.5.2, v5.5.28, v5.5.33, v5.5.34, v5.5.35, v5.5.36, v5.5.37, v5.5.39, v5.5.40, v5.5.41, v5.5.43, v5.5.44, v5.6.0, v5.6.1, v5.6.10, v5.6.11, v5.6.12, v5.6.13, v5.6.14, v5.6.15, v5.6.16, v5.6.17, v5.6.19, v5.6.2, v5.6.20, v5.6.21, v5.6.22, v5.6.23, v5.6.24, v5.6.25, v5.6.26, v5.6.27, v5.6.28, v5.6.29, v5.6.3, v5.6.30, v5.6.31, v5.6.32, v5.6.33, v5.6.34, v5.6.35, v5.6.36, v5.6.37, v5.6.38, v5.6.39, v5.6.4, v5.6.5, v5.6.6, v5.6.7, v5.6.8, v5.6.9, v5.7.0, v5.7.1, v5.7.10, v5.7.11, v5.7.15, v5.7.2, v5.7.20, v5.7.21, v5.7.22, v5.7.23, v5.7.26, v5.7.27, v5.7.28, v5.7.3, v5.7.4, v5.7.5, v5.7.6, v5.7.7, v5.7.8, v5.7.9, v5.8.0, v5.8.11, v5.8.12, v5.8.14, v5.8.15, v5.8.17, v5.8.18, v5.8.19, v5.8.2, v5.8.20, v5.8.22, v5.8.24, v5.8.27, v5.8.28, v5.8.29, v5.8.3, v5.8.30, v5.8.31, v5.8.32, v5.8.33, v5.8.34, v5.8.35, v5.8.36, v5.8.4, v5.8.8, v5.8.9].
    - Can only install one of: laravel/framework[5.6.x-dev, v7.0.8].
    - Can only install one of: laravel/framework[5.7.x-dev, v7.0.8].
    - Can only install one of: laravel/framework[5.8.x-dev, v7.0.8].
    - don't install illuminate/container 5.7.17|don't install laravel/framework v7.0.8
    - don't install illuminate/container 5.7.18|don't install laravel/framework v7.0.8
    - don't install illuminate/container 5.7.19|don't install laravel/framework v7.0.8
    - don't install illuminate/container 5.7.x-dev|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.7.0|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.7.1|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.7.10|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.7.11|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.7.15|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.7.2|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.7.20|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.7.21|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.7.22|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.7.23|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.7.26|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.7.27|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.7.28|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.7.3|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.7.4|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.7.5|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.7.6|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.7.7|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.7.8|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.7.9|don't install laravel/framework v7.0.8
    - don't install illuminate/container 5.8.x-dev|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.8.0|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.8.11|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.8.12|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.8.14|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.8.15|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.8.17|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.8.18|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.8.19|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.8.2|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.8.20|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.8.22|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.8.24|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.8.27|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.8.28|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.8.29|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.8.3|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.8.30|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.8.31|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.8.32|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.8.33|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.8.34|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.8.35|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.8.36|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.8.4|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.8.8|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.8.9|don't install laravel/framework v7.0.8
    - don't install illuminate/container 5.5.x-dev|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.5.0|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.5.16|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.5.17|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.5.2|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.5.28|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.5.33|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.5.34|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.5.35|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.5.36|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.5.37|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.5.39|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.5.40|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.5.41|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.5.43|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.5.44|don't install laravel/framework v7.0.8
    - don't install illuminate/container 5.6.x-dev|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.6.0|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.6.1|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.6.10|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.6.11|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.6.12|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.6.13|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.6.14|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.6.15|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.6.16|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.6.17|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.6.19|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.6.2|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.6.20|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.6.21|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.6.22|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.6.23|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.6.24|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.6.25|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.6.26|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.6.27|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.6.28|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.6.29|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.6.3|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.6.30|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.6.31|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.6.32|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.6.33|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.6.34|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.6.35|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.6.36|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.6.37|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.6.38|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.6.39|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.6.4|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.6.5|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.6.6|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.6.7|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.6.8|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.6.9|don't install laravel/framework v7.0.8
    - don't install illuminate/container 5.4.x-dev|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.4.0|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.4.13|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.4.17|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.4.19|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.4.27|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.4.36|don't install laravel/framework v7.0.8
    - don't install illuminate/container v5.4.9|don't install laravel/framework v7.0.8
    - Installation request for laravel/framework (locked at v7.0.8, required as ^7.0) -> satisfiable by laravel/framework[v7.0.8].
    - Installation request for leroy-merlin-br/mongolid ^2.2 -> satisfiable by leroy-merlin-br/mongolid[v2.2.0, v2.2.1, v2.2.2, v2.2.3].
``

Branch strategy

Before v2.0 we should define how our branchs will be organized.

Topics to discus:

  • Use master branch for stable and develop for vNext

Insert or fail

Right now, the save method performs an upsert in MongoDB. It would be usefull to have a method like saveUnique that would perform a real insert in MongoDB, which will throw an exception if a document with the given _id already exists.

Unsetting a field and updating the model has no effect

If you try to run the code below:

unset($model->field);
$model->update();

and then fetch the model from database again, the field is still there.
I guess that the behavior should be the same of $model->save(), really unsetting the field.

[v1] It's impossible to count the exact amount when using limit() on cursor

OdmCursor method count() doesn't allow for passing the boolean all that \MongoCursor allows.

So, when using limit() on cursor, I need to grab MongoCursor to actually count.

$odmCursor->limit(10);
$odmCursor->count(); // returns count without limit, e.g. 2356
$odmCursor->getCursor->count();  // returns count without limit, e.g. 2356
$odmCursor->getCursor->count(true);  // returns count with limit, 10

We need to allow the same signature for count in order to fix this.

Problem with "Setup" mongolid in my project

Hi Zizaco,

I tried to use composer and I followed your guide, but following the "Setup" paragraph, I have a problem: I receive a fatal error because it can't find Manager.php.

So, I noticed that composer doesn't download me all the sources. For example, I noticed that into src/ there are only a few files, but for example there isn't Manager.php and so autoload can't find this file!

Can you help me to solve this problem?

Thanks, Tangalor

Save Only Modified Data

A great feature to have would be if the save() method only updated data that had been changed since the model was queried.

This is helpful because other data in the document may have changed since the document was queried and by updating the whole document you would be overriding those changes.

You also have the added benefit of a smaller payload which in theory should update quicker.

Not possible to project fields

Hi,

I'm doing a full text search with mongo and need to project the score field onto each document for sorting purposes but because of how mongolid handles selecting fields this is not possible.

How it works now is that mongolid takes each field passed and prepares them by flipping them and assigning a 1 to each field.

So doing something like this with mongolid wont work:

$docs = Document::where(['$text' => ['$search' => 'some string']], ['score' => ['$meta' => 'textScore']]);

If i can come up with a good solution to this then i will try to do a pull request.

Embed-Many querying

Hi, is it possible to find a embedded document to do an update (for example), because im trying to do a simple $ad->images()->find(1234); and it throws me a Call to a member function find() on a non-object. if is possible to query in the embedded documents?? or there's another way to achieve this.

Thanks.

$driver_options['typeMap']

Hi

I want to utilize the mongodb connection to the server through out other packages that i am using in my slim3 application. The problem is that your package uses

$driver_options['typeMap'] = ['array' => 'array', 'document' => 'array'];

and some other libraries that i use dont like the above settings, and when i disable this they work simply fine, so would like to know if i disable this option is there going to be any problem with your package ?

Self relation/referencing feature

Well I am well aware of relational data and that mongodb is a document db but there are some scenarios which mongolid wont work.

Imagine a scenario to have a many to many relationship and an additional relationship which in my case is a self related model. Mongodb didnt insert the 'parent' model to the collection. Any ideas if there is a trick to implement self referencing?

how to simulate query and paginate methods

Hi,

edit: Just realised this question is probably in the wrong package so have re-created here: leroy-merlin-br/mongolid-laravel#154

Please close/delete if this is the wrong place - sorry

Just discovered this project and am interested to see how it performs against laravel-mongodb

to do this we have lots of legacy laravel model builder methods that will need to have equivalents. I'm happy to write the overrides but need some pointers on getting started.

for example to use livewire-datatables a builder needs to be returned from an example query of:

public function query()
{
         return Order::query()
                    ->when($this->getFilter('search'), function($query, $term){
                        $query = $query->search((string)$term);
                        $query = $query->searchCustomer((string)$term);
                        $query = $query->searchExtras((string)$term);
                        return $query;
                    })
                    ->when($this->getFilter('status'), fn($query, $status) => $query->statusSearch((int)$status))
                    ->whereNull(Order::CANCELLED_AT)
                    ->orderBy(Order::CREATED_AT, 'desc');
}

then later in code, it calls

$query->paginate();

to return a LAP object.

So in this instance I need to create new methods for query(), when() , whereNull() , OrderBy() and paginate() which (I assume) will be via an extended Query/Builder.php (??) class

is this viable? is there a better way of handling this?

my start point was to override the MongolidModel with something like:

namespace App\Models\Overrides\Mongolid;

use MongolidLaravel\MongolidModel as BaseMongolidModel;

class MongolidModel extends BaseMongolidModel
{
    public static function query() {
//        return (new static())->getLocalMock();
          return Container::make(Builder::class);
    }
}

what would you suggest I return in the initial ->query() call? :-)

thanks in advance for any help.

Ioc::make Call to a member function make() on null

Bem, como não nenhuma issue falando disso, resolvi abrir um, estou testando aqui a lib de vocês, e desde já quero agradecer muito pelo trabalho e empenho de vocês, assisti seu vídeo @Zizaco falando sobre mongo e a leroy.
meu código ta aqui:
https://gist.github.com/lpj145/e3cf5d5b44e7393806e1d589c8c0a956

estou recebendo o seguinte erro: ncaught Error: Call to a member function make() on null in C:\www\mongolidtest\vendor\leroy-merlin-br\mongolid\src\Mongolid\Container\Ioc.php:42

Verificando aqui não consegui achar, alguém pode me da uma luz, de como resolver, tenho que incluir o bootstrap no meu aplicativo ?

Uncaught Error: Class 'Mongolid\Manager' not found...

Using composer i require the package name however in the src folder of this package all i get are the following files:

CachableOdmCursor.php
Model.php
MongoDbConnector.php
OdmCursor.php
Sequence.php

and also i get the error in the title, which means some classes are missing and the question is why they are not included ?

Call polymorph() on embeded documents

Call polymorph() internally when retrieving embbeded documentds using embedsOne or embedsMany.

Also, I see no point in polymorph receiving an $instance. It should simply use $this.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.