Laravel Eloquent Nested Relationship group by - PullRequest
0 голосов
/ 31 января 2019

У меня есть три модели Spot, DealItem и Daypart, каждая из которых имеет свои собственные отношения

class Spot extends Model
{
   protected $table = 'avt_spot';
   public $timestamps = false;

   public function dealItem()
   {
       return $this->belongsTo('App\SkyDealitem', 'deal_core_service_id', 'core_service_id');
   }
}

class SkyDealItem extends Model
{
    protected $table = 'sky_deal_item';
    public $timestamps = false;

    public function daypart()
    {
        return $this->belongsTo('App\Daypart','daypart_code_id','id');
    }
}

class Daypart extends Model
{
    protected $table = 'avt_US_daypart';
    public $timestamps = false;

    public function deals()
    {
        return $this->hasMany('App\DealItem','daypart_code_id','id');
    }
}

Каждое место будет иметь столбец с именем pre_eval_tvr, он принадлежит DealItem, а также кампании также

Каждый DealItem принадлежит к daypart.

FYI - кампания будет иметь несколько мест

Теперь запрос, который я ищу, является daypart wise pre_eval_tvr с использованием отношений.

Использование тольконормальный запрос соединения, я могу получить его, но с вложенными отношениями я не могу его получить.

FYI - присоединиться к запросу

select sum(avt_spot.pre_eval_tvr) as pre_eval_tvr, avt_US_daypart.*
from avt_spot
inner join sky_deal_item on avt_spot.deal_core_service_id = sky_deal_item.core_service_id
inner join avt_US_daypart on avt_US_daypart.id = sky_deal_item.daypart_code_id
where avt_spot.allocated_to_campaign = 4442
group by avt_US_daypart.id;
...