hasMany(Transaction::class, 'work_id', 'id'); } /** * Get all products required for this work * * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany */ public function products() { return $this->belongsToMany(Product::class, 'work_products') ->withPivot('quantity_required', 'notes') ->withTimestamps(); } /** * Get work products pivot records * * @return \Illuminate\Database\Eloquent\Relations\HasMany */ public function workProducts() { return $this->hasMany(WorkProduct::class); } /** * Get the category associated with the Work * * @return \Illuminate\Database\Eloquent\Relations\BelongsTo */ public function category() { return $this->belongsTo(Category::class); } /** * Get all dealer prices for this work * * @return \Illuminate\Database\Eloquent\Relations\HasMany */ public function dealerPrices() { return $this->hasMany(WorkDealerPrice::class); } /** * Get price for specific dealer * * @param int $dealerId * @return WorkDealerPrice|null */ public function getPriceForDealer($dealerId) { return $this->dealerPrices() ->where('dealer_id', $dealerId) ->active() ->first(); } /** * Get price for specific dealer (including soft deleted) * * @param int $dealerId * @return WorkDealerPrice|null */ public function getPriceForDealerWithTrashed($dealerId) { return $this->dealerPrices() ->withTrashed() ->where('dealer_id', $dealerId) ->first(); } /** * Get all active prices for this work * * @return \Illuminate\Database\Eloquent\Relations\HasMany */ public function activeDealerPrices() { return $this->hasMany(WorkDealerPrice::class)->active(); } }