Нужно ли разделять локальный scope на два в зависимости от количества значений в аргументе?

Хотел бы узнать мнения, как корректнее/правильнее писать:

public function scopeByPartnerId($query, $partnerId)
{
    if (is_countable($partnerId)) {
        $query->whereIn('partner_id', $partnerId);
    } else {
        $query->where('partner_id', $partnerId);
    }
}

или

public function scopeByPartnerId($query, $partnerId)
{
    $query->where('partner_id', $partnerId);
}

public function scopeByPartnerIds(Builder $query, array $partnerIds)
{
    $query->whereIn('partner_id', $partnerIds);
}
  • Вопрос задан
  • 87 просмотров
Решения вопроса 2
alexey-m-ukolov
@alexey-m-ukolov Куратор тега Laravel
Никакого "правильнее" в данном вопросе нет и быть не может. Может быть "понятнее для других" и "поддерживеемее". По второму разницы нет, по первому я предпочитаю такой вариант:
public function scopeByPartnerId($query, int|array $partnerId)
{
    if (is_countable($partnerId)) {
        $query->whereIn('partner_id', $partnerId);
    } else {
        $query->where('partner_id', $partnerId);
    }
}

И, разумеется, в самом классе описан doc-block для этого метода, в котором тоже корректные типы аргументов указаны.
Ответ написан
Комментировать
pLavrenov
@pLavrenov
Разработка сайтов
Лично мое мнение - не нужно разделять. Это же удобно.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
delphinpro
@delphinpro Куратор тега Laravel
frontend developer
Не надо ничего разделять. Нужно оставить один метод множественного выбора.
Ответ написан
Комментировать
@jazzus
Partner отношение? Тогда правильнее использовать методы отношений
$partner->relations
whereHas, with итд
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы