gpt4 book ai didi

php - Laravel 多对多自定义 'ID' 列

转载 作者:行者123 更新时间:2023-11-29 02:14:53 25 4
gpt4 key购买 nike

我有 2 个表 users 和 teams,它们组成了一个关系表 user_team。

user_team 表有 cod_user 和 cod_equipe 列,并引用用户的列 cod 和团队的 cod。

这个关系返回 NULL

用户模型

public function user_team(){
//belongs to -> pertence a
return $this->belongsToMany('App\User','user_team','cod_user','cod_equipe');
}

团队模型

public function team_user(){
//belongs to -> pertence a
return $this->belongsToMany('App\Team','user_team','cod_equipe','cod_user');
}

我认为这是因为 Eloquent 尝试使用用户 ID JOIN cod_user,但引用在 cod 列上。

我怎样才能改变这个?

最佳答案

您能否阐明关于这些表的数据库架构是什么样的?为了在显式定义它们时使关系起作用,您需要指定相关模型中的外键,然后是要加入的表的外键。我对这里使用“cod”作为用户和团队表中提到的外键感到困惑。来自 users 表的外键引用是一个名为“cod”的字段吗?团队也一样吗?

如果是这样,您需要将其指定为用户模型的外键,并假设“cod_user”是 user_team 中的键,它在用户模型中看起来像这样:

 public function userTeam(){
return $this->belongsToMany('App\User','user_team','cod','cod_user');
}

来自 laravel 文档: Laravel 5.3 eloquent many-to-many relationships

In addition to customizing the name of the joining table, you may also customize the column names of the keys on the table by passing additional arguments to the belongsToMany method. The third argument is the foreign key name of the model on which you are defining the relationship, while the fourth argument is the foreign key name of the model that you are joining to:

return $this->belongsToMany('App\Role', 'role_user', 'user_id', 'role_id');

此外,如果 users 或 teams 表上的主键未命名为“id”,则您必须通过在 User 和 Team 模型中定义变量 $primaryKey 来覆盖约定。

关于php - Laravel 多对多自定义 'ID' 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41514456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com