D'Arcy Rail-Ip
D'Arcy Rail-Ip

Reputation: 11965

Why does my whereHas query error out with undefined method "getHasCompareKey()"?

I have a model Job which is attached to one model Project.

Here are the class definitions:

class Job extends Model
{
    public function project() {
        return $this->belongsTo('App\Project');
    }
}

class Project extends Model
{
    public function jobs() {
        return $this->hasMany('App\Job');
    }
}

I'm trying to query the Jobs collection and filter on either jobs.title or project.title.

Here is my current search query:

$jobs = Job::where(function($query) use ($searchTerm) {
            $query->where('title', 'LIKE', $searchTerm)
                    ->orWhereHas('project', function ($subQuery) use ($searchTerm) {
                            return $subQuery->where('title', 'LIKE', $searchTerm);
                    });
        })->get();

However, this is returning an error:

Call to undefined method Jenssegers\Mongodb\Query\Builder::getHasCompareKey()

Upvotes: 0

Views: 420

Answers (1)

Lars Mertens
Lars Mertens

Reputation: 1439

I think you need to clean up your code a bit:

$jobs = Job::where('title', 'LIKE', $searchTerm)
            ->orWhereHas('project', function ($query) use ($searchTerm) {
                            $query->where('title', 'LIKE', $searchTerm);
                        })->get();

Upvotes: 1

Related Questions