我开始使用Zend Framework。我一直在这里和那里做一些教程。
在我的一个观点中,我有这段代码:
<?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
+--------------------+
答案 0 :(得分: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/
这些文章帮助我理解了映射器。