我是CakePHP 1.3中的新手......我想显示或显示USER的用户名而不是USER的id,他们在POST视图中发布了COMMENTS ......有人可以帮我吗?
这是我做的模型关联:
POST-> COMMENT->用户
我已经阅读了CakePHP 1.3的可包含行为,但我仍然无法理解......请帮助我在post_controller的视图中添加哪些代码& view.ctp,可以在POST视图中显示相关的相关表。
如何在POST视图中调用USER的数据。
我仍然感到困惑。
先谢谢,Azure
答案 0 :(得分:1)
<强>假设强>
您有三个表格如下
(1) Posts
* id
* title
(2) Comments
* id
* post_id
* user_id
(3) Users
* id
* name
在 PostsController.php 文件中查看功能
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);
}
app / View / Posts /文件夹中 view.ctp 文件的内容
<!-- 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';
} ?>
模型文件:User.php
<?php
class User extends AppModel {
public $hasMany = array(
'Comment' => array(
'className' => 'Comment',
)
);
}
?>
模型文件:Comment.php
<?php
class Comment extends AppModel {
public $belongsTo = array(
'User' => array(
'className' => 'User',
'foreignKey' => 'user_id'
)
);
}
?>
模型文件:Post.php
<?php
class Post extends AppModel {
public $hasMany = array(
'Comment' => array(
'className' => 'Comment',
)
);
}
?>
答案 1 :(得分:0)
我假设您在评论表中保存用户ID,用户名在发布评论的用户表中,然后使用以下解决方案
在Controller方法中:
$userdata=$this->User->find('all',array('fields'=>array('id','username'),'recursive'=>-1));
$userid=Set::extract('/User/id', $userdata);
$username=Set::extract('/User/username', $userdata);
$data=array_combine($username,$userid);
$this->set('name',$data);
在视图中:
$cid=$var['Comment']['user_id'];
$username=array_search($cid, $name);
echo $username;