Как получить данные отношения многие ко многим, используя сводную таблицу

У меня есть ниже модели:

1. Campaign
2. Coupon
3. CampaignCoupon

CampaignCoupon является моделью сводной таблицы для многих ко многим отношениям Campaign а также Coupon,

У меня ниже отношения в CampaignCoupon модель:

public function coupons() {
    return $this->belongsToMany('App\Coupon', 'campaign_coupon','campaign_id','coupon_id');         
}

public function campaigns() {
    return $this->belongsToMany('App\Campaign', 'campaign_coupon','campaign_id','coupon_id');
}

В запросе я получаю coupon_id а также campaign_id теперь я хочу получить Coupon а также Campaign использование данных CampaignCoupon модель.

Вот запрос, который я использовал:

$CampaignCoupon = CampaignCoupon::where('campaign_id', $input['campaign_id'])
    ->where('coupon_id', $input['coupon_id'])
    ->with(['coupons', 'campaigns']) 
    ->first();

Но он возвращает нулевой массив купонов и кампании.

{"id":95,"campaign_id":21,"coupon_id":25,"max_usage":21,"coupons":[],"campaigns":[]}  

Может ли кто-нибудь помочь?

1 ответ

Решение

Используйте эти отношения вместо ваших

public function coupons() {
     return $this->belongsTo('App\Coupon','coupon_id');   
           } 
public function campaigns() {
     return $this->belongsTo('App\Campaign','campaign_id');   
           }
Другие вопросы по тегам