public function __construct($builder, $params)
{
$this->builder = $builder;
$this->params = $params;
$this->prefix = Config::get('apihandler.prefix');
$this->envelope = Config::get('apihandler.envelope');
$isEloquentModel = is_subclass_of($builder, '\\Illuminate\\Database\\Eloquent\\Model');
$isEloquentRelation = is_subclass_of($builder, '\\Illuminate\\Database\\Eloquent\\Relations\\Relation');
$this->isEloquentBuilder = $builder instanceof EloquentBuilder;
$this->isQueryBuilder = $builder instanceof QueryBuilder;
if ($this->isEloquentBuilder) {
$this->query = $builder->getQuery();
} else {
if ($isEloquentRelation) {
$this->builder = $builder->getQuery();
$this->query = $builder->getBaseQuery();
$this->isEloquentBuilder = true;
} else {
if ($isEloquentModel) {
//Convert the model to a builder object
$this->builder = $builder->newQuery();
$this->query = $this->builder->getQuery();
$this->isEloquentBuilder = true;
} else {
if ($this->isQueryBuilder) {
$this->query = $builder;
} else {
throw new InvalidArgumentException('The builder argument has to the wrong type.');
}
}
}
}
$this->originalBuilder = clone $this->builder;
$this->originalQuery = clone $this->query;
}