@ProggRamm

Как исправить ошибку Call to a member function fetchAll() on array в php?

Есть функция фильтра
public function filter($showActiveOnly, $showNotAdded, $showHalfAdded, $showDeclined)
    {
        $newRow = [];

        $statuses = [
            'dodano' => $showActiveOnly,
            'nedodano' => $showNotAdded,
            'casdodano' => $showHalfAdded,
            'storno' => $showDeclined,
        ];

        foreach ($statuses as $status => $addFilter)
        {
            if ($addFilter)
            {
                $newRow[] = $this->db->table(self::TABLE_NAME)->where(array('status' => $status));
                // or :
                // array_push($newRow, $this->db->table(self::TABLE_NAME)->where(array('status' => $status)));
            }
        }
        return $newRow ? : $this->db->table(self::TABLE_NAME);
    }


и фунция в которой fetchAll и она вызывает функцию filter

public function getFiltered($showActiveOnly, $showNotAdded, $showHalfAdded, $showDeclined)
    {
        return $this->filter($showActiveOnly, $showNotAdded, $showHalfAdded, $showDeclined)->fetchAll();

        //$rows = $this->filter($showActiveOnly, $showNotAdded, $showHalfAdded, $showDeclined);
        //$rows->execute();
        //$results = $rows->fetchAll();
        //return  $results;
    }


Вылазит ошибка Call to a member function FetchAll() on array
При чём если из функции filter убрать квадратные скобки возле newRow который в цикле то ошибка пропадаер и функция работает но не так как нужно
  • Вопрос задан
  • 332 просмотра
Пригласить эксперта
Ответы на вопрос 1
iMedved2009
@iMedved2009
Не люблю людей
1. В случае фильтрации вы возвращаете массив - и у массива нет метода fetchAll. Как собственно и других методов.
2. В случае если вы убираете квадратные скобки то тогда у вас возвращается только данные с первым статусом.

Если я правильно понял то вам надо посмотреть есть ли метод whereIn у вашего $this->db->table и использовать его.
Ответ написан
Ваш ответ на вопрос

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

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