Ошибка PHP Stan с возвращаемым типом Union в PHP v7, laravelPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка PHP Stan с возвращаемым типом Union в PHP v7, laravel

Сообщение Anonymous »

В соответствии с некоторыми условиями мне нужно вернуть int или Collection (данные таблицы из запроса MySQL или его счетчик). Вот код, который я реализовал.

Код: Выделить всё

public function myMethod(
Term $term,
int $id,
?bool $includeRecords = false,
?int $page = 1,
?int $count = 100
) {
$currentDefaultSegment = Segment::DEFAULT_SEGMENTS[$id];
$filterFieldName = $currentDefaultSegment['type'] === 'opener' ? 'lastOpenDate' : 'lastClickDate';

$query = DB::connection(MYSQL_DB)
->table("my_table")
->where('status', 1)
->where('id', $term->getId())
->whereRaw("{$filterFieldName} > CURDATE() - INTERVAL {$currentDefaultSegment['duration']} DAY");

if ($includeRecords) {
return $query->limit($count)->offset(($page - 1) * $count)->get(); // It return Collection
}

return $query->count(); // It return int
}
Но когда я использую этот метод, php-stan жалуется и кажется, что он не распознает, когда будет Collection или Int.
Сообщение об ошибке: невозможно вызвать метод Transform() в Illuminate\Support\Collection|int.
Вот код, вызывающий указанный выше метод.

Код: Выделить всё

$this->myMethod(prams here)->transform(....)
// В этом случае тип возвращаемого значения myMethod должен быть Collection вместо Int.
Вопрос: Как определить и заставить тип возвращаемого значения быть только Collection или только Int в зависимости от к вариантам использования?
Я пробовал создать 2 метода вместо одного в соответствии с условиями, но тело метода Почти такое же, поэтому я не думаю, что создавать 2 — хорошая идея методы. Но понятия не имею, как решить проблему.

Подробнее здесь: https://stackoverflow.com/questions/791 ... v7-laravel
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»