2

ZendFrameworkを使い始めています。私はあちこちでいくつかのチュートリアルを行ってきました。

私の見解の1つでは、次のコードブロックがあります。

<?php foreach($this->Instruments as $Instrument) : ?>
    <tr>
        <td><?php echo $this->escape($Instrument->nom);?></td>
        <td><?php echo $this->escape($Instrument->idtypeofinstrument);?></td>
        <td>
        </td>
    </tr>
<?php endforeach; ?>

idtypeofinstrumentは外部キーですが、現在はを表示するだけidです。ユーザーにとってもっと明確なものを表示したいと思います。

私のテーブル:

+------------------+
| typeofinstrument |
+------------------+
| id               | -- primary key
| typeofinstrument | -- what I want to display
+------------------+

+--------------------+
|     instrument     |
+--------------------+
| id                 | -- primary key
| name               |
| idtypeofinstrument | -- foreign key
+--------------------+
4

1 に答える 1

1

これを行う簡単な方法。実際には正しくありませんが、簡単です。

//escape() removed for clarity
<?php foreach($this->Instruments as $Instrument) : ?>
    <tr>
        <td><?php echo $Instrument->nom;?></td>
        <?php $table = new Application_Model_DbTable_Typeofinstument();
              $select = $table->select()->where('id = ?',$Instrument->idtypeofinstrument);
              $type = $table->fetchRow($select); ?>
        <td><?php echo $type->typeofinstrument;?></td>
        <td>
        </td>
    </tr>
<?php endforeach; ?>

より正確な方法でそれを行うには、マッパー、ORM、またはその他のソリューションを使用して、テーブル内のデータを機器オブジェクトにマップする必要があります。

元のコードが必要なデータを返すことを目標としています。

さらにチェックアウトを理解するには:

http://phpmaster.com/building-a-domain-model/

http://phpmaster.com/integrating-the-data-mappers/

これらの記事は、マッパーを理解するのに大いに役立ちました。

于 2012-09-13T10:29:38.780 に答える