hasMany(Offer::class); } public function sale_channel() { return $this->belongsTo(SaleChannel::class); } public function sale_channels() { // return $this->HasManyThrough(SaleChannel::class, PriceList::class); return $this->HasManyThrough(SaleChannel::class, PriceList::class, 'id', 'id', 'id', 'sale_channel_id'); } public function tariff_unity() { return $this->belongsTo(TariffUnity::class); } public function price_lists() { return $this->hasMany(PriceList::class); } public function price_list_values() { return $this->hasManyThrough(PriceListValue::class, PriceList::class); } public function scopeByAutocomplete($query, $str) { return $query->where($this->table . '.name', 'LIKE', "%${str}%") ->orWhere($this->table . '.ref', 'LIKE', "${str}%") ->orWhere($this->table . '.code', 'LIKE', "${str}%"); } public function scopeBySaleChanel($query, $id) { return $query->where($this->table . '.sale_channel_id', $id); } public function scopeByStatus($query, $id) { return $query->where($this->table . '.status_id', $id); } public function scopeByOffer($query, $id) { return $query->whereHas('offers', function ($query) use ($id) { $query->byID($id); }); } public function scopeActive($query) { return $query->byStatus(0)->byPriceListsActive(); } public function scopeByPriceListsActive($query) { return $query->whereHas('price_lists', function ($query) { $query->active(); }); } }