当前位置: 首页 > 知识库问答 >
问题:

Laravel口才-多对多与数据透视表的位置

郏志学
2023-03-14

我试着看看做下面的事情最好的方法是什么。

我有3个表:users、items和item_user。

users和items表非常通用,id和几列来保存任何数据。

item_user表具有以下结构ID
item_id
user_id
user_type[1-所有者2-追随者3-其他内容]

关系:每个项目有一个所有者(用户类型)
每个项目有许多追随者
每个用户可以拥有许多项目
每个用户可以追随许多项目

我希望所有者和追随者是用户表,这样我就不需要复制用户数据。我创建了一个item_id、user_id和user_type的透视表来保存这些关系。

所以问题是我如何做到这一点,拉拉维尔雄辩?

项模型如下所示:

public function user() {
    return $this->belongsToMany('Users');
    // This isn't actually correct since it belongs to only one User but not sure how to specify a where user_type = 1;
    // return $this->belongsTo('User');
}

用户模型如下所示:

public function item() {
    return $this->hasMany('Item');
}

谢谢!

共有1个答案

郭麒
2023-03-14

您只需将条件附加到belomstomany声明

public function user() {
    return $this->belongsToMany('Users')->where('user_type', 1);
}

这将只返回透视表中user_type=1user条目。为了更加清楚,您可以将方法命名为owner(),而不是user(),以反映添加的条件。

 类似资料:
  • 如果我尝试以下操作,则页面正在加载: 有以下表格:-用户-user_department-部门 数据透视表用户\u部门有两个外键:-部门\u id-用户\u id 在我的用户模型中: 在我的部门模型中: 顺便说一下:以下代码正在工作: 但是我无法在不破坏我的页面的情况下获得用户的部门。 有什么想法吗?

  • 在我的Laravel应用程序中,我有三个数据库表,分别称为users、projects和roles。它们之间存在m:n关系,所以我也有一个称为PROJECT_USER_ROLE的透视表。透视表包含user_id、project_id和role_id列。请参见MySQL工作台的屏幕截图。 我的用户、项目和角色模型得到了如下定义的归属关系: 现在我可以很容易地获得通过身份验证的用户的项目: 对此的回应

  • 我正在创建一个应用程序,其中用户可以被分配到多个组织,组织可以有多个用户--多对多的关系。 我希望能够这样做:以及 我有表... 我有表... 呃!用户-组织,组织-用户! 和我有数据透视/映射/等。表 表有一个字段和一个字段。 Elecoquent假设并期望-但这不是我为表命名的,也不想重命名。 我设置了以下内容 用户: 然后我测试一下: 并得到以下错误: SQLState[42S02]:找不到

  • 我试图创建一个关系,通过一个名为年级的模型访问一个名为注释的表,通过年级中的学生加载 年级模型和学生模型都属于其他模型 根据我的理解,不可能访问需要透视表的hasManyThrough关系(注释没有年级标识符,只有学生标识符) 我为Laravel 4@HasManyThrough找到了这些函数,它们具有一对多关系,但它给了我一个错误类“App\illumb\Database\Eloquent\Re

  • 您好,当我更新或删除API中的数据时,我需要有关laravel 8多对多关系透视表的帮助。这些是我的文件信息。首先,我创建了两个表:Companies(迁移文件) 联系人(迁移文件) 在此之后,创建透视表company\u contact(迁移文件) 模型如下所示:公司模型 } 联系人模型 } 我的路线文件 我的公司控制人 } 公司存储请求 公司资源 也许有人可以帮助我在公司控制器中编写正确的st

  • 我有一个用户表和一个帐户表。 此帐户表定义用户可以拥有的帐户。 例如 账户: 用户: 我现在有另一个表:users\u accounts 我正在为新用户创建一个界面。在这个页面上,我有基本的细节,但也有一个复选框列表(从accounts表创建)。复选框表示用户需要为其设置的帐户。 我要做的是创建帐户时: 我还想将用户ID和他们需要设置的帐户添加到users_accounts表中。单个用户可能需要多