2015-12-30 81 views
1

我正在使用Magento,它在zend框架上,下面的代碼當前輸出匹配標準is_read != 1', 'is_remove != 1'的第一行。我需要修改此代碼以輸出與上述條件匹配的最後4個表格行。我嘗試了幾件事,但都沒有奏效。請幫忙!如何獲取並顯示多行?

模塊名/型號/資源/

public function loadLatestNotice(Mage_AdminNotification_Model_Inbox $object) 
{ 
    $adapter = $this->_getReadAdapter(); 
    $select = $adapter->select() 
     ->from($this->getMainTable()) 
     ->order($this->getIdFieldName() . ' DESC') 
     ->where('is_read != 1') 
     ->where('is_remove != 1') 
     ->limit(1); 
    $data = $adapter->fetchRow($select); 

    if ($data) { 
     $object->setData($data); 
    } 

    $this->_afterLoad($object); 

    return $this; 
} 

以下是所使用的一些其他的代碼...

模塊名/型號/

public function loadLatestNotice() 
{ 
    $this->setData(array()); 
    $this->getResource()->loadLatestNotice($this); 
    return $this; 
} 

模塊名/座/

public function getLatestNotice() 
{ 
    return $this->_getHelper() 
     ->getLatestNotice()->getTitle(); 
} 

模板/

href="<?php echo $latestNoticeUrl ?>" onclick="this.target='_blank';"><?php echo $this->getLatestNotice() ?> 
+2

我對Magneto並不是很熟悉,但是好像你正在爲你的查詢設置一個限制(參見你正在使用的'limit(1)'函數) – Qirel

+0

首先祝你新年快樂!提到改變極限是我嘗試的第一件事,這並沒有產生我需要的結果。從我理解它是必需的,但我也需要做一些其他的事情,它實際上顯示超過當前1。 – Nxlevel

回答

0

我能夠解決自己的問題,通過使用下面的方法。 我試圖生產的第一件事是4通知錶行,而不是1,是要更改->limit(1);->limit(4);$adapter->fetchRow($select);$adapter->fetchAll($select);。問題是,解決方案不僅需要更改這兩個值。

模塊名/型號/資源/

public function loadLatestNotice(Mage_AdminNotification_Model_Inbox $object) 
{ 
    $adapter = $this->_getReadAdapter(); 
    $select = $adapter->select() 
     ->from($this->getMainTable()) 
     ->order($this->getIdFieldName() . ' DESC') 
     ->where('is_read != 1') 
     ->where('is_remove != 1') 
     ->limit(4); 
    $data = $adapter->fetchAll($select); 

    if ($data) { 
     $object->setData($data); 
    } 

    $this->_afterLoad($object); 

    return $this; 
} 

改變之後,模板將停止輸出信息,爲了使模板來輸出新的數組,你必須重複一些代碼,並刪除->getTitle()行中的塊文件,然後更改模板.phtml文件中的幾行代碼,如下所示。

模塊名/砌塊/

public function getNewFuncName() 
{ 
return $this->_getHelper() 
    ->getLatestNotice(); 
} 

模板/

<?php 
$notice = $this->getNewFuncName(); 
foreach ($notice as $item) { 
foreach ($item as $value) { 
echo '<div class="notemssg"><p id="notetitle" href='.$value['url'].' >'.$value['title'].'</p><p id="notedate">'.$value['date_added'].'</p></div>'; 
       } 
      } 
      ?> 

改變代碼正確地調用並顯示陣列將導致它被顯示4級表中的​​行。該代碼可以修改爲可以使用的任何方式,你想顯示在前面的信息。

希望這可以幫助別人!