未找到列 - Laravel哪里有错误

时间:2016-02-20 21:03:03

标签: php laravel eloquent

我很难解决这个错误。

我的模特:

用户模型:

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

TeamRequest模型:

class TeamRequest extends Model {

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

现在,我正在尝试此查询:

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

而且,我收到了一个错误:

  

找不到列:1054'where子句'中的未知列'users.id'   (SQL:从team_requests中选择count(*)   team_requestsrequested_user_id = usersid

为什么我收到此错误?

架构:

用户表

主键 - id

varchar - email

varchar - 密码

team_requests表

主键 - id

整数 - requested_user_id

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

1 个答案:

答案 0 :(得分:3)

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

您的代码应为:

UserModel::whereHas('requests', function ($query) use ($team_id) {
    $query->where('team_id', $team_id);
});