Skip to content

how to simulate query and paginate methods #175

@shopapps

Description

@shopapps

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions