如何使用laravel查询在哪里有属于多个关系

法尔沙德

嗨,我有一个UserandTask模型,他们有很多对很多关系,如下所示:

 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))

当我改变idusers.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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章