esbenp / esbenp/larapi

Filter function BUILDER expected Illuminate\Database\Query\Builder but Illuminate\Database\Eloquent\Builder given

Open
#8 3 comments 0 reactions 0 assignees View on GitHub
Dominant language
PHP
Stars
399
Forks
114
PR merge metrics
No merged PRs in 30d

Description

I have this function in my User (Models)
```
public function drivers()
{
return $this->belongsTo(Driver::class, 'id', 'user_id');
}
public function isDriverAvailable()
{
return $this->drivers();
}
```

and then the UserRepository (Repositories)
```
use Illuminate\Database\Query\Builder;
class UserRepository extends Repository
{
public function filterIsDriverAvailable(Builder $query, $method, $clauseOperator, $value, $in)
{
$query->whereIn('drivers.status', ['available']);
}
```
It returned this error when I tried to filter using postman
`"Type error: Argument 1 passed to Api\Users\Repositories\UserRepository::filterIsDriverAvailable() must be an instance of Illuminate\Database\Query\Builder, instance of Illuminate\Database\Eloquent\Builder given"`

> $this->belongsTo(Driver::class, 'id', 'user_id') **<-- this one is Eloquent\Builder**

but

> filterIsDriverAvailable(Builder $query, $method, $clauseOperator, $value, $in) **<-- expected arg Query\Builder**

any ideas on how to resolve this?

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.