Мне было интересно, могли бы вы, ребята, помочь со сложным запросом.
У меня есть три заметки.
Пользователи, вакансии и комментарии.
Задания назначаются пользователям, но любой пользователь может оставить комментарий к работе.
В настоящий момент, после выпечки традиционным способом, в представлении 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>
Спасибо за вашу помощь!