Laravel не позволяет добавлять слишком много дополнительных отношений

У меня есть модель под названием Transfer и модель под названием Accountи два отношения по моему Transfer модель:

public function outgoing()
{
return $this->belongsTo(Account::class, 'outgoing_id');
}

public function incoming()
{
return $this->belongsTo(Account::class, 'incoming_id');
}

Это используется, например, для перевода денег с моего банковского счета на мой кошелек или с моей кредитной карты в мой банк и т. Д.

Таким образом, учетная запись может иметь несколько типов. Например, bank может быть типом учетной записи. Теперь, если я хочу получить все исходящие банковские переводы, используя фактическое имя bankЯ должен использовать дополнительное отношение, например:

public function outgoingbank()
{
return $this->belongsTo(Account::class, 'outgoing_id')->where('type', 'bank');
}

И захватить все исходящие переводы, которые bank переводы, теперь я могу использовать это:

auth()->user()->transfers()->has('outgoingbank')->get();

Но мой вопрос, есть ли лучший способ сделать это, например, с областями запросов в моем Account модель, вместо добавления дополнительного отношения для каждого account type? Или, возможно, аксессуар в моем Transfer модель?

1

Решение

Исправил это с помощью whereHas, которое внезапно появилось в моем мозгу:

$bank_transfers = auth()->user()->transfers()->with('outgoing')->whereHas('outgoing', function ($query){
return $query->where('type', 'bank');
})->get();
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]