我想知道你们是否可以帮助解决复杂的问题 我有三张桌子。
用户,工作和评论。
将作业分配给用户,但任何用户都可以对作业发表评论
目前,在烘焙传统方式后,View Job
视图会在底部显示相关评论。但是,“评论”表格会显示数字user_id
,而我希望它显示与所述user_id
匹配的“用户名”。
在View Job
视图中,我有这个数组及其各自的键:
$job;
$job['Users'];
$job['Comments'];
$job['Job'];
这是$job
数组的调试输出。
Array
(
[Job] => Array
(
[id] => 1
[user_id] => 1
[title] => New Job
[body] => adsljbfalwsjbflkjb
[deadline] => 2011-07-15
[completed] => 0
)
[User] => Array
(
[id] => 1
[username] => dan
[password] => 2fd27a6319ef3faf9ed55b59830d786b5ed890be
)
[Comment] => Array
(
[0] => Array
(
[id] => 3
[job_id] => 1
[user_id] => 2
[hours] => 6
[body] => Comment from Phil
[date] => 2011-07-12
)
[1] => Array
(
[id] => 2
[job_id] => 1
[user_id] => 1
[hours] => 2
[body] => This is a Comment from the 9th
[date] => 2011-07-09
)
)
)
我能用这些来做一些能让我显示用户名而不是user_id吗?我可以修改模型吗?控制器?
我对CakePHP很陌生,虽然我已经掌握了基础知识,但我正在努力应对更复杂的查询。
这是我要更改的视图文件:
<div class="related">
<h3><?php __('Comments'); ?></h3>
<?php if (!empty($job['Comment'])): ?>
<table cellpadding = "0" cellspacing = "0">
<tr>
<th><?php __('User'); ?></th>
<th><?php __('Date'); ?></th>
<th><?php __('Hours'); ?></th>
<th><?php __('Body'); ?></th>
<th class="actions"><?php __('Actions'); ?></th>
</tr>
<?php
$i = 0;
foreach ($job['Comment'] as $comment):
$class = null;
if ($i++ % 2 == 0) {
$class = ' class="altrow"';
}
?>
<tr<?php echo $class; ?>>
<td><?php echo $comment['user_id']; ?></td> // NEEDS TO BE USERNAME NOT USER ID
<td><?php echo $comment['date']; ?></td>
<td><?php echo $comment['hours']; ?></td>
<td><?php echo $comment['body']; ?></td>
<td class="actions">
<?php echo $this->Html->link(__('View', true), array('controller' => 'comments', 'action' => 'view', $comment['id'])); ?>
<?php echo $this->Html->link(__('Edit', true), array('controller' => 'comments', 'action' => 'edit', $comment['id'])); ?>
<?php echo $this->Html->link(__('Delete', true), array('controller' => 'comments', 'action' => 'delete', $comment['id']), null, sprintf(__('Are you sure you want to delete # %s?', true), $comment['id'])); ?>
</td>
</tr>
<?php endforeach; ?>+
</table>
<?php endif; ?>
</div>
感谢您的帮助!
答案 0 :(得分:1)
我通过在要从中检索名称的模型上运行find('list')解决了同样的问题。
在您的情况下,您希望找到Users-&gt; find('list')并将其分配给控制器中的变量,然后在您的视图中,id显示您在id上添加新变量。
e.g。将$ job ['Comment'] ['user_id']更改为$ users [$ job ['Comment'] ['user_id']]
答案 1 :(得分:0)
您可能忘记在displayField
模型上设置de User
属性。
class User extends AppModel { var $displayField = 'username';}