如何获取和显示多行?

时间:2015-12-30 03:13:27

标签: php model module fetch magento-1.9

我正在使用zend框架上的Magento,以下代码当前输出符合条件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() ?>

1 个答案:

答案 0 :(得分: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个表行。代码可以修改为使用以及您希望在前端显示信息的任何方式。

希望这有助于某人!