Search code examples
phplaraveleloquenteloquent-relationship

Laravel relationships use Where


This relationship is in my Maintenance.php

  public function contactedContractor()
    {
        return $this->hasMany(ContactedContractor::class, 'maintenance_id');
    }

I want to use the relationship in a query in my controller

$contractor_maintenances = Maintenance::whereHas('contactedContractor', function ($query) {
                                                    return $query->where('contacted_contractors.user_id', '=', 8);
                                                })
                                                        ->where('contacted_contractors.user_id', $contractor_user_id)
                                                        ->latest('maintenances.created_at')
                                                        ->get();

but the where clause is not working giving me this error

Unknown column 'contacted_contractors.user_id' in 'where clause

How do I use the where clause?


Solution

  • You've passed in the query. Maintenance doest not have user_id

    ->where('contacted_contractors.user_id', $contractor_user_id)
    

    Pass your query as below.

    $contractor_maintenances = Maintenance::whereHas('contactedContractor', function ($query) use ($contractor_user_id) {
                                    return $query->where('user_id', $contractor_user_id);
                                })->latest('maintenances.created_at')->get();