doude4201 2014-02-08 13:26
浏览 53
已采纳

在帖子视图中显示用户的用户名w /相关评论

I am a newbie in CakePHP 1.3... I want to display or show the USER's username instead of USER's id, who post the COMMENTS in the POST view... Anyone can help me please?

Here is the model association I made:

  1. POSTS 'has many' COMMENTS
  2. COMMENTS 'belongs to' USERS

POST->COMMENT->USER

I already read the Containable Behavior of CakePHP 1.3, but still I can't understand it well... Please help me what codes to put in the post_controller's view & view.ctp that can show the related's related table in the POST view.

And How to call the USER's data in the POST view.

I'm still confused.

Thanks in Advance, Azure

  • 写回答

2条回答 默认 最新

  • duandaishi9268 2014-02-20 13:44
    关注

    Assumptions

    You have three tables as below

    (1) Posts
        *  id
        *  title
    
    (2) Comments
        * id
        * post_id
        * user_id
    
    (3) Users
        * id
        * name
    

    View Function in PostsController.php file

    public function view($id) {
        if (!$id) {
            throw new NotFoundException(__('Invalid post'));
        }
    
        $this->Post->recursive=2;
        $post = $this->Post->findById($id);
        if (!$post) {
            throw new NotFoundException(__('Invalid post'));
        }
        $this->set('post', $post);
    }
    

    Content of view.ctp file in app/View/Posts/ folder

    <!-- File: /app/View/Posts/view.ctp -->
    <h1><?php echo 'Post ID : '.h($post['Post']['id']); ?></h1>
    <h1><?php echo 'Post Title : '.h($post['Post']['title']); ?></h1>
    <?php 
    echo 'Comments By Users : ';
    if(!empty($post['Comment'])){
        foreach ($post['Comment'] as $key=>$value){?>
        <p>User Name : <?php echo $value['User']['name'];?></p>
        <?php }
    }
    else {
        echo '<br/>';
        echo 'No Comments Yet';
    } ?>
    

    Model File : User.php

    <?php
    class User extends AppModel {
        public $hasMany = array(
            'Comment' => array(
                    'className' => 'Comment',
            )
    );
    }
    ?>
    

    Model File : Comment.php

    <?php
    class Comment extends AppModel {
    public $belongsTo = array(
            'User' => array(
                    'className' => 'User',
                    'foreignKey' => 'user_id'
            )
    );
    }
    ?>
    

    Model File : Post.php

    <?php
    class Post extends AppModel {
    public $hasMany = array(
            'Comment' => array(
                    'className' => 'Comment',
            )
    );
    }
    ?>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?