我很难解决这个错误。
我的模特:
用户模型:
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_requests
。requested_user_id
=users
。id
)
为什么我收到此错误?
架构:
用户表
主键 - id
varchar - email
varchar - 密码
team_requests表
主键 - id
整数 - requested_user_id
我有其他专栏,但我相信它们没有效果。
答案 0 :(得分:3)
您的问题是您在传递给get()
的关闭内部正在调用whereHas()
。闭包用于向子查询添加约束,子查询将用于确定用户是否有请求。您只应该在闭包内向查询添加约束,您不想实际执行该查询。如果在闭包内部执行查询,则会出现错误(正如您所见),因为它应该是子查询,并且没有正确执行所需的所有信息。
您的代码应为:
UserModel::whereHas('requests', function ($query) use ($team_id) {
$query->where('team_id', $team_id);
});