Make sure you associations are correct and start using the Containable
behaviour.

Then you would simply do:
$this->Post->find('first', array(
  'conditions'=>array('Post.id'=>$id),
  'contain'=>array('Comment'=>'User', 'User')
));

Debugging the array from the above find would show that you would have
the posts associated user and all comments with their associated
users.  You would then loops through the comments and in each comment
array have access to the user's details.

http://book.cakephp.org/view/1323/Containable

HTH, Paul.

On Oct 17, 3:51 pm, Mitchell Vargo <[email protected]> wrote:
> I must be doing it wrong...,, obviously...
> This is my view in the Posts controller:
>
>         public function view($id = null) {
>                 $this->Post->id = $id;
>                 if (!$this->Post->exists()) {
>                         throw new NotFoundException(__('Invalid post'));
>                 }
>                 $this->set('post', $this->Post->read(null, $id));
>                 $users = $this->Post->User->find('list');
>                 $comment = $this->Post->User->find('all', array('contain' =>
> 'Comment.user_id = User.username')); // This is my attempt, trying to
> make it work.
>                 $this->set(compact('users'));
>
>                 $this->addComment();
>         }
>
> Which I then try to use $comment['User']['username']; in my view.
> It's annoying because it can't be that hard.
>
> On Oct 17, 4:23 pm, euromark <[email protected]> wrote:
>
>
>
>
>
>
>
> > sry, I misread the codelines for the edit/add action
>
> > you are missing the relationship to user
> > if you have the belongsTo relation set in your post model
> > you still need to fetch it in the find() statement
>
> > either use $recursive = 0/1 or better use the containable behavior
> > and "contain"=>array('User')
>
> > tip: debug your $comment array with pr($comment) to see what you get.
>
> > On 17 Okt., 15:54, Mitchell Vargo <[email protected]> wrote:
>
> > > Thanks for your reply.
> > > I've tried to get it right for some time now, but I can't manage to
> > > make it work.
> > > I get this error when I try to use $comment['User']['username']
>
> > > Notice (8): Undefined index: User [APP\View\Posts\view.ctp, line 51]
>
> > > include - APP\View\Posts\view.ctp, line 51
> > > View::_render() - CORE\Cake\View\View.php, line 598
> > > View::render() - CORE\Cake\View\View.php, line 365
> > > Controller::render() - CORE\Cake\Controller\Controller.php, line 900
> > > Dispatcher::_invoke() - CORE\Cake\Routing\Dispatcher.php, line 113
> > > Dispatcher::dispatch() - CORE\Cake\Routing\Dispatcher.php, line 88
> > > [main] - APP\webroot\index.php, line 93
>
> > > On Oct 17, 11:32 am, flosky <[email protected]> wrote:
>
> > > > Hi Mitchell,
>
> > > > I guess that 'user_id' is the foreign key to the users table?
> > > > If so, you should add a 'hasOne' relationship in the comments model
> > > > (comments have one user).
> > > > When that is working, cake automatically gets the corresponding user
> > > > data when you use find().
> > > > Now you can pass the results to the view and get the username with
> > > > $post['User']['username'].
>
> > > > -flosky
>
> > > > On 17 Okt., 11:03, euromark <[email protected]> wrote:
>
> > > > > did you add
> > > > > $this->displayField = 'username';
> > > > > to the user model?
>
> > > > > On 17 Okt., 02:58, Mitchell Vargo <[email protected]> wrote:
>
> > > > > > Is there an easy way of replacing the user_id to username in a view
> > > > > > that looks like this?
>
> > > > > > <div class="related">
> > > > > >         <h3><?php echo __('Related Comments');?></h3>
> > > > > >         <?php if (!empty($post['Comment'])):?>
> > > > > >         <table cellpadding = "0" cellspacing = "0">
> > > > > >         <tr>
> > > > > >                 <th><?php echo __('Id'); ?></th>
> > > > > >                 <th><?php echo __('Title'); ?></th>
> > > > > >                 <th><?php echo __('Content'); ?></th>
> > > > > >                 <th><?php echo __('Username'); ?></th>
> > > > > >                 <th class="actions"><?php echo __('Actions');?></th>
> > > > > >         </tr>
> > > > > >         <?php
> > > > > >                 $i = 0;
> > > > > >                 foreach ($post['Comment'] as $comment): ?>
> > > > > >                 <tr>
> > > > > >                         <td><?php echo $comment['id'];?></td>
> > > > > >                         <td><?php echo $comment['title'];?></td>
> > > > > >                         <td><?php echo $comment['content'];?></td>
> > > > > >                         <td><?php echo $comment['user_id']; ?></td> 
> > > > > > <------- I want to
> > > > > > change this into the users username
> > > > > >                         <td class="actions">
> > > > > >                                 <?php echo 
> > > > > > $this->Html->link(__('View'), array('controller' =>
> > > > > > 'comments', 'action' => 'view', $comment['id'])); ?>
> > > > > >                                 <?php echo 
> > > > > > $this->Html->link(__('Edit'), array('controller' =>
> > > > > > 'comments', 'action' => 'edit', $comment['id'])); ?>
> > > > > >                                 <?php echo 
> > > > > > $this->Form->postLink(__('Delete'), array('controller'
> > > > > > => 'comments', 'action' => 'delete', $comment['id']), null, __('Are
> > > > > > you sure you want to delete # %s?', $comment['id'])); ?>
> > > > > >                         </td>
> > > > > >                 </tr>
> > > > > >         <?php endforeach; ?>
> > > > > >         </table>
> > > > > > <?php endif; ?>
> > > > > > </div>

-- 
Our newest site for the community: CakePHP Video Tutorials 
http://tv.cakephp.org 
Check out the new CakePHP Questions site http://ask.cakephp.org and help others 
with their CakePHP related questions.


To unsubscribe from this group, send email to
[email protected] For more options, visit this group at 
http://groups.google.com/group/cake-php

Reply via email to