hasMany(static::ProductModel,'supplier_item_id','id'); } final public function supplier_detail() { return $this->belongsTo(SupplierDetail::class); } /* ATTRIBUTES */ public function getBaseCostAttribute(?float $val): float { return $val ?: 0; } /** * This will return the category of the product (eg: domain, hosting, etc) which is the basis for all * other logic of these types. * * @return string */ final public function getCategoryAttribute(): string { return strtolower((new \ReflectionClass($this))->getShortName()); } /** * Return a friendly name for this product, used for display * * @return string */ final public function getCategoryNameAttribute(): string { return static::category_name; } final public function getContractTermAttribute(?int $val): int { return $val ?: 1; } public function getMinCostAttribute(): float { return $this->setup_cost+$this->base_cost*$this->contract_term; } public function getNameAttribute(): string { return $this->product_id ?: 'Supplier PID Unknown'; } public function getNameLongAttribute(): string { return $this->product_desc ?: 'Supplier NAME Unknown'; } public function getSetupCostAttribute(?float $val): float { return $val ?: 0; } public function getSupplierAttribute(): Model { return $this->supplier_detail->supplier; } }