2

DB からすべての結果をフェッチする方法を知っています。私がやりたいことは、選択した行をフェッチすることです。誰でもサンプルコードを教えてください。

public function getAllAddresses()
    {
        $dbTable = new Application_Model_DbTable_User();
        $result = $dbTable->fetchAll();

        $addresses = array();
        foreach ($result as $row) {

        $address = new Application_Model_User();
        $address->setuserId($row->userId)
            ->setuserName($row->userName)
            ->setaddressLine1($row->addressLine1)
            ->setaddressLine2($row->addressLine2)
            ->setaddressLine3($row->addressLine3)
            ->settelephone($row->telephone);

        $addresses[$row->userId] = $address;
    }

    return $addresses;
}

どうすればフェッチできますか..

これは、fetchAll へのコントローラー呼び出しです。

public function indexAction()
    {
        // action body
        $addressMap = new Application_Model_UserMapper();
        $addresses = $addressMap->getAllAddresses();

        $this->view->addresses = $addresses;
    }

fetch メソッドを呼び出すにはどうすればよいですか?

これが私の見解です

<?php if (isset($this->addresses)) : ?>
    <table>
        <thead>
        <tr>
            <th>Id</th>
            <th>Name</th>
            <th>Street</th>
            <th>City</th>
            <th>Town</th>
            <th>Telephone</th>
        </tr>
        </thead>
        <tbody>
        <?php 
        foreach ($this->addresses as $userId => $address) {
            $trow = '<tr>';
            $s = $address->getuserId();
            $trow .= '<td>'. $address->getuserId() .'</td>';
            $trow .= '<td>'. $address->getuserName() .'</td>';
            $trow .= '<td>'. $address->getaddressLine1() .'</td>';
            $trow .= '<td>'. $address->getaddressLine2() .'</td>';
            $trow .= '<td>'. $address->getaddressLine3() .'</td>';
            $trow .= '<td>'. $address->gettelephone() .'</td>';
            $trow .= '<td><a href="Index?id='. $s .'">Edit</a></td>';
            $trow .= '</tr>';

            print $trow;
        }
        ?>
        </tbody>
    </table>
<?php else : ?>
    <p>Address not found</p>
<?php endif; ?>

私は Zend と MVC アーキテクチャに非常に慣れていません。どんな助けでも大歓迎です。

4

2 に答える 2

2

http://framework.zend.com/manual/1.12/en/zend.db.table.row.htmlに完全なドキュメントがあります。

fetchRow()の代わりに: メソッドを呼び出す必要があります。fetchAll()

于 2013-02-19T10:08:37.503 に答える
0

列名が「id」でid = 5、ユーザーテーブルから行をフェッチするとします。$id = 5

$userObj = new Application_Model_DbTable_User();
$userRow = $userObj->fetchRow('id = '.$id);

ユーザー列に次のようにアクセスできるようになりました。

 echo $userRow->columnName;
于 2013-05-21T13:55:43.717 に答える