因此,belongsToMany关系是多对多关系,因此需要数据透视表
示例中,我们有一个users
表,一个roles
表和一个user_roles
数据透视表。
枢轴表有两列,user_id
,foo_id
…foo_id
指的是id
在角色表。
为此,我们在user
雄辩的模型中编写了以下代码:
return $this->belongsToMany('Role', 'user_roles', 'user_id', 'foo_id');
现在,这个寻找一个id
在外地users
表,并与加入它user_id
在该领域user_roles
表。
问题是我想指定一个不同的字段,而不是id
在users
表中加入。例如bar_id
,在用户表中我想用作local key
与之联接的表user_id
从laravel的文档中,尚不清楚如何执行此操作。在诸如hasMany
和belongsTo
这样的其他关系中,由于某种原因,我们可以在此处指定local key
,foriegn key
但不能在此处指定。
我希望local key
用户表上的bar_id
而不是id
。
我怎样才能做到这一点?
更新:从 Laravel 5.5 开始,可以使用通用关系方法,如下面的@cyberfly所述:
public function categories()
{
return $this->belongsToMany(
Category::class,
'service_categories',
'service_id',
'category_id',
'uuid', // new in 5.5
'uuid' // new in 5.5
);
}
供参考,以前的方法:
我认为这id
是您User
模型的主键,因此无法使用Eloquent方法执行此操作,因为belongsToMany
它是$model->getKey()
用来获取该键的。
因此,您需要创建自定义的关系扩展来belongsToMany
满足您的需求。
您可以尝试快速猜测一下:(未经测试,但肯定无法用于急切的加载中)
// User model
protected function setPrimaryKey($key)
{
$this->primaryKey = $key;
}
public function roles()
{
$this->setPrimaryKey('desiredUserColumn');
$relation = $this->belongsToMany('Role', 'user_roles', 'user_id', 'foo_id');
$this->setPrimaryKey('id');
return $relation;
}
我需要在我的数据库中创建多个多对多的关系。 有一个“主”表,我们称之为“项目”。 然后有3个表包含“选项”。 假设我们有:品类、地域、用户。这些保存的唯一信息是项目的名称和ID。 可以将多个类别、区域和用户分配给多个项目。 因此,我有两个选项来创建这种关系: 1)为每个'选项'表创建关系表。每个表包含两列:project_id和category_id、region_id或user_id。使用这种方
我在我的application.ie有一个参考系统,一个用户可以参考另一个。 用户表 转介表 我想显示用户的推荐。 用户模型 推荐模型 定义在用户模型中有很多关系,在推荐模型中属于关系,我没有得到预期的结果。 这将返回给我用户本身(推荐人)的名称,而不是推荐人的名称
编辑: 我正在使用热切加载,我认为这将影响它的工作方式。
我正在为一位客户建一家商店。现在在产品页面上,有一个下拉列表,您可以选择“标准”或“快递”。 当客户选择此选项时,您可以从本产品中选择所需的金额。 现在我在stackoverflow(Woocommerce get variation product price)上找到了一段代码,可以直接在下拉列表中的金额之后显示正确的价格。这很好用。 但是现在,第一个金额变化(100欧元(22欧元))的价格也显
在Mac OS X上的Eclipse Kepler上有一个简单的Google App Engine Web应用程序项目,其java版本为“1.7.0_45” 遇到以下情况: 当我尝试在localhost上作为web应用程序运行时 任何帮助都是有用的。
我有2个具有1:(0或1)关系的表,例如: 表1-学生 表2-学生地址 并非每个学生都有地址(例如) 我想更新这两个表,更新学生,如果存在相对行student_address-更新也student_address。