Понимание проблемы получения одной строки из базы данных с двумя параметрами

Я думал, что это сработает, но это не так.

У меня есть метод в моем классе моделей:

public function getUnitbyName2($unitname, $ProjectID)
    {
        //$id = (int) $id;
        $rowset = $this->tableGateway->select(['Unitname' => $unitname], ['ProjectID' => $ProjectID]);
        $row = $rowset->current();
        if (! $row) {
//          throw new RuntimeException(sprintf(
//                  'Could not find row with identifier %d',
//                  $unitname
//                  ));
            $row=0;
        }
        return $row;
    }

Если я укажу существующее имя модуля и несуществующий идентификатор проекта, я ожидаю получить значение 0. Но я всегда получаю номер модуля в первом проекте с заданным именем модуля. Обычно имя модуля существует в нескольких разных проектах. Предполагается, что функция получает правильную запись, если она существует с использованием обоих параметров.

Мой вопрос в том, что не так с использованием 2 параметров, связанных по И?


person pia-sophie    schedule 22.09.2017    source источник


Ответы (1)


AbstractTableGateway::select( ) принимает один аргумент, вы передаете 2: вам нужно передать 1, объединить 2 массива. Измените свой код на:

$rowset = $this->tableGateway->select(['Unitname' => $unitname, 'ProjectID' => $ProjectID]);
person Jannes Botis    schedule 22.09.2017