2012-03-14 34 views
1

我试图在使用Zend Framework 1.11,Zend_Db和Zend_Db_Select的数据库查询中创建信息表。试图在Zend Framework中获取非对象的属性1.11应用

最初,我通过实例化我的表的新实例并使用$ table-> select()来解决这个问题。

但是,当我去加入到另一个表时,我收到一条错误消息,我无法使用此select()方法加入。在做了一些研究之后,我发现如果我想做这个JOIN,我必须从我的默认适配器中调用select()方法。看似简单。

在这一点上,我有一个模型,一个控制器和一个视图,但是我认为我的控制器&我的视图之间出现了“翻译中丢失”的内容。

这里是模型(内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; 
} 

和控制器(管理控制器):

public function getWorkAction() 
{ 

    $table = new Application_Model_DbTable_Activityrequest(); 

    $row = $table->getAllActivityRequests(); 

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

} 

和(管理/获取工作)(相关部分)查看:

<?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,我看到日e数组,我试图传递给视图。但是,一旦我看到该视图,我就会在“非对象”上看到此错误。

任何帮助,将不胜感激。

谢谢!

+0

什么是实际的错误消息中满了吗? – Phil 2012-03-14 03:30:32

+0

注意:试图在/applications/Mamp/htdocs/fifthroomstorage.com/application/views/scripts/admin/get-work.phtml上获得非对象属性,第14行 – jflores 2012-03-14 04:06:31

+0

我想我需要弄清楚一种方法使数组成为一个对象。或者至少每行都有一个对象。 – jflores 2012-03-14 04:07:51

回答

1

您需要设置适配器/ select/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

+0

设置适配器工作完美。谢谢! – jflores 2012-03-14 04:29:48

相关问题