0

私の Users コントローラーでは、特定のユーザーの投稿をプロファイルに表示しようとしています。どうすればこれを達成できますか? 基本的に、私は Posts テーブルにアクセスしようとしている Users コントローラーにいます

これらは私のテーブルです

//Posts
id | body | user_id

//Users
user_id | username

これは私のユーザーのプロフィール機能です

  UsersController.php

  public function profile($id = null) {
    $this->User->id = $id;
    if (!$this->User->exists()) {  //if the user doesn't exist while on view.ctp, throw error message
        throw new NotFoundException(__('Invalid user'));
    }
    $conditions = array('Posts.user_id' => $id);
    $this->set('posts', $this->User->Posts->find('all',array('conditions' => $conditions))); 
}


/Posts/profile.ctp     

<table>
<?php foreach ($posts as $post): ?>

    <tr><td><?php echo $post['Post']['body'];?>
    <br>

    <!--display who created the post -->
    <?php echo $post['Post']['username']; ?>
    <?php echo $post['Post']['created']; ?></td>
</tr>
<?php endforeach; ?>
</table>

profile.ctp の各行を参照して、いくつかの「未定義のインデックス エラー」が発生しています。

Undefined index: Post [APP/View/Users/profile.ctp, line 11]
4

1 に答える 1

1

アクションでは、モデルを使用してUsersController関連情報にアクセスできます。profileUser

例:

class UsersController extends AppController {
    public function profile($id = null) {
        $this->User->recursive = 2;
        $this->set('user', $this->User->read(null, $id));
    }
}

UserおよびPostモデルでは、正しい関連付けが設定されている必要があります。

Userモデル:

class User extends AppModel {
    public $hasMany = array('Post');
}

Postモデル:

class Post extends AppModel {
    public $belongsTo = array('User');
}

$userビューの変数に、指定されたプロファイル ID のすべてのユーザー データと、そのユーザーに関連付けられた投稿があることがわかります。

CakePHP ドキュメントのこのページには、モデルからデータを読み取る際に役立つヒントがいくつかあります。

于 2012-08-06T01:11:00.663 に答える