我在Laravel的hasManyThrough
关系(L5.2)中遇到了一些问题。
我有用户和组,而不是标准的连接表或自定义枢轴模型,我正在使用另一个名为GroupMembership的Eloquent模型来链接这两者。这是课程的相关部分:
class User extends Model {
use SoftDeletes;
protected $primaryKey = 'user_id';
public function groupMemberships() {
return $this->hasMany(GroupMembership::class);
}
}
class GroupMembership extends Model {
protected $primaryKey = 'group_membership_id';
public function user() {
return $this->belongsTo(User::class);
}
public function group() {
return $this->belongsTo(Group::class);
}
}
class Group extends Model {
use SoftDeletes;
protected $primaryKey = 'group_id';
public function groupMemberships() {
return $this->hasMany(GroupMembership::class);
}
public function users() {
return $this->hasManyThrough(User::class, GroupMembership::class,
'group_id', 'user_id', 'group_id'
);
}
}
我的问题在于$group->users()
关系,我试图通过GroupMembership关系获取组中的所有用户。当我尝试访问它时,生成的SQL是:
select `users`.*, `group_memberships`.`group_id` from `users`
inner join `group_memberships`
on `group_memberships`.`group_membership_id` = `users`.`user_id`
where `group_memberships`.`group_id` = '10'
and `users`.`deleted_at` is null
在该查询中,内部连接条件错误。而不是group_memberships.group_membership_id
,它应该是group_memberships.user_id
。
我做错了什么?