【问题标题】:How to get the project which belongs specific user如何获取属于特定用户的项目
【发布时间】:2021-05-25 23:55:07
【问题描述】:

数据库

我有 3 个表 users、posts 和 post_user

users table     projects table      project_user table
---------       ---------           --------------------
id | name       id | name           project_id | user_id
---------       ---------           --------------------
1  | user1      1  | pr1            1      |    1
2  | user2      2  | pr2            2      |    1
---------       3  | Pr3            3      |    2
                ---------          --------------------

模型

用户模型


public function projects(){
    return $this->belongsToMany(Project::class);
}

项目模型


public function users(){
    return $this->belongsToMany(User::class);
}

项目由 laravel 8.x 编写 现在在控制器中查看如何获取属于特定用户 ID 的所有项目。 我只需要使用 laravel 显示登录用户的项目。

【问题讨论】:

  • 请告诉我们你到目前为止尝试了什么

标签: laravel


【解决方案1】:
$projects = App\User::find(5)->projects;

这将为 ID 5 的用户获取所有项目。

你当然需要导入 App\User::find 之类的类,或者在 PHP 文件顶部有use App\User

为了进一步了解正在发生的事情:

  • User::find(5) - 返回 ID 为 5 的用户(或任何您的主键字段)
  • ->projects 是一个神奇的方法,它将返回 User 类的 projects() 方法中定义的关系的所有结果。
  • 如果我们完成了->projects()(而不是->projects),我们将改为接收关系的查询构建器对象,我们可以将更多查询参数链接到该关系上(例如->where()->limit(x) 等),最后可以调用->get()返回查询的结果(集合)。

【讨论】:

  • 这假设您已使用数据透视表正确设置数据库。
  • 抱歉,我如何才能将其限制为仅 10 行
  • 对不起,但我如何才能将其限制为 10 行 $projects = App\User::find(5)->projects; @本杰明赫尔
  • 是的,只需执行 ->projects()->limit(5)->get()。使用 ->projects 立即调用查询并返回所有相关项目的结果。使用 ->projects() 获取查询构建器实例,这意味着您可以向查询添加更多位。
猜你喜欢
  • 2014-10-12
  • 1970-01-01
  • 2013-12-14
  • 1970-01-01
  • 2014-11-08
  • 1970-01-01
  • 1970-01-01
  • 2011-11-22
  • 1970-01-01
相关资源
最近更新 更多