在我的用户控制器中,我试图在其个人资料中显示给定用户的帖子。我怎么能做到这一点?基本上,我在用户控制器中试图访问帖子表
这些是我的表
//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>
我在参考profle.ctp
的每一行时得到了几个“未定义的索引错误”Undefined index: Post [APP/View/Users/profile.ctp, line 11]
答案 0 :(得分:1)
在UsersController
操作的profile
中,您可以使用User
模型访问相关信息。
示例:
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的所有用户数据,以及该用户的相关帖子。
This page in the CakePHP documentation在从模型中读取数据时提供了一些非常有用的提示。