Laravel 关系使用 Where

Posted

技术标签:

【中文标题】Laravel 关系使用 Where【英文标题】:Laravel relationships use Where 【发布时间】:2021-02-10 21:36:00 【问题描述】:

这个关系在我的Maintenance.php

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

我想在我的控制器的查询中使用关系

$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();

但是 where 子句不起作用给我这个错误

Unknown column 'contacted_contractors.user_id' in 'where clause

如何使用 where 子句?

【问题讨论】:

【参考方案1】:

您已通过查询。 Maintenance没有user_id

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

如下传递您的查询。

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

【讨论】:

以上是关于Laravel 关系使用 Where的主要内容,如果未能解决你的问题,请参考以下文章

使用 Laravel 关系调用模型方法

LARAVEL 5.3,获取用户名和角色名(使用 Laravel 模型关系)

Laravel 关系使用 Where

在 laravel 中使用关系创建模型

Laravel / Eloquent 模型关系查看器

laravel 5.3 关系模型使用非默认键