Попытка получить свойство необъекта в приложении Zend Framework 1.11 - PullRequest
1 голос
/ 14 марта 2012

Я пытаюсь создать таблицу информации в запросе к базе данных, используя Zend Framework 1.11, Zend_Db и Zend_Db_Select.

Изначально я пошел по этому пути, создав новый экземпляр моей таблицы и используя $ table-> select ().

Однако, когда я пошел, чтобы присоединиться к другой таблице, я получил сообщение об ошибке, что я не смог присоединиться, используя этот метод select (). Проведя некоторые исследования, я обнаружил, что мне пришлось вызывать метод select () моего адаптера по умолчанию, если я хотел сделать это JOIN. Казалось, просто.

На данный момент у меня есть модель, контроллер и представление, но я думаю, что что-то «теряется в переводе» между моим контроллером и моим представлением.

Вот модель (внутри Application_Model_DbTable_ActivityRequest):

public function getAllActivityRequests()
{

        $db = $this->getDefaultAdapter();
        $select = $db->select();

        $select->from('activityrequest');
        $select->where('isDeleted = ?','N');
        $select->where('ReqType <> ?','Purchase Product');
        $select->order('ReqTime DESC');

        $query = $select->query();
        $row = $query->fetchAll();

        return $row;
}

И контроллер (Admin Controller):

public function getWorkAction()
{

    $table = new Application_Model_DbTable_Activityrequest();

    $row = $table->getAllActivityRequests();

    $this->view->activityrequests = $row;

}

И (соответствующая часть) Просмотр (admin / get-work):

<?php foreach($this->activityrequests as $activity): ?>
<tr>
    <td><?= $activity->CustomerID; ?></td>
    <td><?= $activity->ReqType; ?></td>
    <td><?= $activity->ReqTime; ?></td>
    <td><?= $activity->PickupTime; ?></td>
    <td><?= $activity->AddressID; ?></td>
    <td><?= $activity->Notes; ?></td>
    <td><?= $activity->HeardAbtUs; ?></td>
    <td><?= $activity->isDeleted; ?></td>
</tr>
<?php endforeach; ?>

Когда я делаю var_dump из $ row в моей модели и в моем контроллере, я вижу массив, который я пытаюсь передать в представление. Как только я добираюсь до представления, я получаю эту ошибку на «необъекте».

Буду признателен за любую помощь.

Спасибо!

1 Ответ

1 голос
/ 14 марта 2012

Вам нужно установить свой адаптер / выбрать / режим выборки dbTable.

См. http://framework.zend.com/manual/en/zend.db.adapter.html#zend.db.adapter.select.fetch-mode

В качестве альтернативы используйте Zend_Db_Table для полного преимущества

public function getAllActivityRequests()
{
    return $this->fetchAll(
        $this->select()
            ->where('isDeleted = ?', 'N')
            ->where('ReqType <> ?', 'Purchase Product')
            ->order('ReqTime DESC')
    );
}

См. http://framework.zend.com/manual/en/zend.db.table.html#zend.db.table.fetch-all.select

...