Мое решение немного отличается
Модель Sale.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Sale extends Model
{
function services() {
return $this->hasMany(Service::class);
}
function price() {
return $this->services->sum('price.price');
}
}
Модель Service.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Service extends Model
{
function sale() {
return $this->belongsTo(Sale::class);
}
function price() {
return $this->hasOne(Price::class, 'type', 'type')
->where('prices.city', $this->city);
}
}
И вы просто вызываете функцию наВаша модель продажи.
\App\Sale::find(3)->price()
Или вы можете сделать это в атрибуте
function getPriceAttribute() {
return $this->services->sum('price.price');
}
и просто получить этот атрибут вот так
\App\Sale::find(3)->price
Но то, что я хотел бы сделать, это переместить типи город к Price
и имеют только price_id в Service
Дайте мне знать, если это вам поможет: D