嗨,我有一个User
andTask
模型,他们有很多对很多关系,如下所示:
public function users()
{
return $this->belongsToMany(User::class,'user_tasks');
}
在我的用户模型中:
public function tasks()
{
return $this->hasMany(Task::class);
}
在我的控制器中,我想获得分配给已登录用户的任务,如下所示:
$task = Task::whereHas('users', function(Builder $query){
$query->where('id',Auth::user()->id);
})->get();
dd($task);
但我得到这个错误:
SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'id' in where clause is ambiguous (SQL: select * from `tasks` where exists (select * from `users` inner join `user_tasks` on `users`.`id` = `user_tasks`.`user_id` where `tasks`.`id` = `user_tasks`.`task_id` and `id` = 4))
当我改变id
到users.id
我得到空值,但是当我加载它下面这样:
$task = Task::with('users')->get();
我通过关系得到了所有任务,他们运转良好,但是在没有工作的情况下,谢谢
由于您正在处理具有这种关系的数据透视表,因此可以使用数据透视表字段user_id
进行过滤:
$task = Task::whereHas('users', function (Builder $query) {
$query->where('user_id', Auth::user()->id);
})->get();
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句