I'm trying to create a table of information in a database query using Zend Framework 1.11, Zend_Db, and Zend_Db_Select.
Initially, I went about this by instantiating a new instance of my table and using $table->select().
However, when I went to JOIN it to another table, I got an error message that I wasn't able to JOIN using this select() method. After doing some research, I found that I had to call the select() method off of my default adapter if I wanted to do this JOIN. Seemed straightforward.
At this point, I have a model, a controller, and a view, but I think something is getting "lost in translation" between my Controller & my View.
Here is the model (inside 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;
}
And the Controller (Admin Controller):
public function getWorkAction()
{
$table = new Application_Model_DbTable_Activityrequest();
$row = $table->getAllActivityRequests();
$this->view->activityrequests = $row;
}
And (relevant part of)the View (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; ?>
When I do a var_dump of $row in both my model and my controller, I see the array that I'm trying to pass to the view. As soon as I get to the view, though, I get this error on a "non-object."
Any help would be appreciated.
Thanks!
You need to set your adapter / select / dbTable fetch mode.
See http://framework.zend.com/manual/en/zend.db.adapter.html#zend.db.adapter.select.fetch-mode
Alternatively, use the Zend_Db_Table
to full advantage
public function getAllActivityRequests()
{
return $this->fetchAll(
$this->select()
->where('isDeleted = ?', 'N')
->where('ReqType <> ?', 'Purchase Product')
->order('ReqTime DESC')
);
}
See http://framework.zend.com/manual/en/zend.db.table.html#zend.db.table.fetch-all.select