あなたが複雑なクエリを手伝ってくれるかどうかは疑問でした。
私は3つのテーブルを持っています。CakePHPの複雑なクエリ
ユーザー、ジョブ、コメント。
ジョブはユーザに割り当てられますが、どのユーザもジョブにコメントを付けることができます。
現時点では、伝統的な方法でベーキングした後、View Job
ビューの下部に関連するコメントが表示されます。しかし、Commentsテーブルには数字user_id
が表示されていますが、これは前述のuser_id
と一致する「username」を表示したいと考えています。 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ではなくusernameを表示するために何かを行うことができますか?モデルを修正しますか?コントローラー?
私は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>
ありがとう:
は、ここで私が変更したい私のビューファイルです!
あなたのビューでは、 'debug($ job)'とあなたの持っているものを投稿します。私はそれが既にそこにあると賭けている。 –
@ Jason McCreary質問を出力に更新しました。 –
コントローラ/モデルコードを見る必要がありますが、これは可能です。あなたは '$ this-> Model-> recursive'を変更していますか?これは、関連作業が追加作業なしにどのくらい深く影響を与えることができます。 – Ross