我的Laravel应用程序和模型中都有一个Member模型:
public function active_memberships() {
return $this->hasMany(MemberMembership::class, 'member_id', 'id')->where(function($query) {
$query->where('ends_at', '>', Carbon::now());
});
}
public function promo_code() {
return $this->hasMany(MemberPromoCode::class, 'member_id', 'id');
}
member_memberships
和member_promo_codes
表均具有member_id作为外键。但是,如果我这样做:
$member = Member::with(['active_memberships','promo_code'])->find($id);
我在active_memberships
中得到了$member
数组,但没有promo_code
。
因此,$member['active_memberships']
打印出一个数组。但是$member['promo_code']
给出了一个错误:
Undefined index: promo_code
我在这里想念什么?
答案 0 :(得分:0)
尝试将您的关系方法更改为以下方法:
public function active_memberships() {
return $this->hasMany('\App\MemberMembership', 'member_id')->where(function($query) {
$query->where('ends_at', '>', Carbon::now());
});
}
public function promo_code() {
return $this->hasMany('\App\MemberPromoCode', 'member_id');
}
您不需要将第三个参数作为id
传递,因为默认情况下,请尝试使用命名空间提供关系,因为这是定义关系的最基本方法。
看看Controller查询是否行得通?