我在使用Laravel的hasManyThrough
關係(L5.2)時遇到了一些問題。Laravel的hasManyThrough使用加入錯誤的關鍵?
我有用戶和組,而不是一個標準的連接表或自定義樞軸模型,我使用另一個名爲GroupMembership的雄辯模型來鏈接這兩個。下面是類的相關部分:
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.user_id
,而不是group_memberships.group_membership_id
。
我在做什麼錯?