Как добавить условие, если в запросе laravel? (ларавель 5.3)

Моя функция в UserRepository.php выглядит так:

public function displayList($year, $subaccountcode = NULL)
{
    $query = Self::orderBy('programcode')
                 ->orderBy('accountcode')
                 ->findWhere(['year' => $year])
            if(isset($subaccountcode))
                 ->findWhere(['subaccountcode' => $subaccountcode]);
            else
                ;
    return $query;
}

Я добавляю условие для проверки существования subaccountcode или нет. Я пытался понравиться, но существует ошибка:

 2/2 ReflectionException in Container.php line 809: Class App\Repositories\UserRepository does not exist 

Как я могу решить ошибку?

ОБНОВЛЕНИЕ

Я использую сторонний пакет. Я получаю отсюда: https://github.com/andersao/l5-repository


person moses toh    schedule 15.01.2017    source источник


Ответы (1)


Это зависит от того, что делает findWhere(). Если это что-то вроде find() и он возвращает объект, но не экземпляр построителя запросов, сделайте следующее:

$query = Self::orderBy('programcode')->orderBy('accountcode')->findWhere(['year' => $year]);

if (isset($subaccountcode)) {
    $query->findWhere(['subaccountcode' => $subaccountcode]);
}

return $query;
person Alexey Mezenin    schedule 15.01.2017
comment
$Subaccountcode существует или нет, ->findWhere (['year' => $ year]) должен оставаться запущенным - person moses toh; 15.01.2017
comment
Существует ошибка: 1/1 BadMethodCallException in Macroable.php line 74: Method findWhere does not exist. - person moses toh; 15.01.2017
comment
@mosestoh этого метода не существует в Laravel, я думал, что этот метод был определен вами. Если вы определили это, пожалуйста, покажите, как вы это сделали. Если нет, используйте where() вместо findWhere() и return $query->get(); в конце. - person Alexey Mezenin; 15.01.2017
comment
Если запрос выглядит так: public function displayList($year, $subaccountcode = NULL) { $query = Self::orderBy('programcode') ->orderBy('accountcode') ->findWhere(['year' => $year]); return $query; }, это работает. Но когда я добавляю условие if, оно не работает - person moses toh; 15.01.2017
comment
@mosestoh, когда вы используете сторонний пакет, вы должны указать это в вопросе. Извините, но я не знаком с пакетом andersao/l5-repository. Я бы порекомендовал вам отредактировать свой вопрос и добавить эту информацию, возможно, кто-то еще сможет вам помочь. - person Alexey Mezenin; 15.01.2017
comment
Ok. Спасибо за помощь - person moses toh; 15.01.2017