未找到列 - Laravel whereHas 错误

Fai*_*med 2 php laravel eloquent

我很难解决这个错误。

我的模型:

用户模型:

class User extends Model{
    public function requests()
    {
        return $this->hasMany('App\Models\TeamRequest','requested_user_id');
    }
}
Run Code Online (Sandbox Code Playgroud)

团队请求模型:

class TeamRequest extends Model {

    public function requested_user()
    {
        return $this->belongsTo('App\Models\User', 'requested_user_id');
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,我正在尝试这个查询:

UserModel::whereHas('requests',function($query) use ($team_id){
            $query->where('team_id',$team_id)
                    ->get();
        });
Run Code Online (Sandbox Code Playgroud)

而且,我收到一个错误:

未找到列:“where 子句”中的 1054 列“users.id”未知(SQL:select count(*) from team_requestswhere team_requests. requested_user_id= users. id

为什么我收到这个错误?

架构:

用户表

主键 - id

varchar - 电子邮件

varchar - 密码

team_requests 表

主键 - id

整数 - requests_user_id

我还有其他专栏,但我相信它们没有效果。

pat*_*cus 6

你的问题是你在get()传递给你的whereHas(). 闭包用于向子查询添加约束,该子查询将用于确定您的用户是否有请求。您只应该向闭包内的查询添加约束,而不想实际执行该查询。如果您在闭包内执行查询,您将收到一个错误(如您所见),因为它应该是一个子查询,并且没有正确执行所需的所有信息。

你的代码应该是:

UserModel::whereHas('requests', function ($query) use ($team_id) {
    $query->where('team_id', $team_id);
});
Run Code Online (Sandbox Code Playgroud)