Учтите, у меня есть три модели: Subscription
, Description
и Expense
.
Каждая подписка принадлежит описанию, и каждое описание имеет много расходов:
Модель Подписка:
public function description()
{
return $this->belongsTo(Description::class);
}
Описание модели:
public function expenses()
{
return $this->hasMany(Expense::class);
}
Модель Расход:
public function description()
{
return $this->belongsTo(Description::class);
}
Я хочу иметь возможность получить все расходы, связанные с подпиской, на основании описания. Когда у меня есть одна подписка, я могу сделать это следующим образом:
$subscription->load(['description.expenses' => function ($q) use (&$transactions, $subscription) {
$transactions = $q->with('description')
->get());
}]);
Но когда я хочу проверить все расходы, которые были сделаны для всех подписок, я не уверен, как поступить. Я пытался использовать hasManyThrough
, но я думаю, что это не сработает вообще, так как ни у моего Description
, ни у Expense
нет subscription_id
. Я также не хочу устанавливать прямую связь для Subscription
и Expense
.
Какие-нибудь указатели, как получить все расходы, которые были сделаны для всех подписок? А точнее сумма всех расходов на все подписки?