2014-02-08 5 views
0

Я новичок в CakePHP 1.3 ... Я хочу отобразить или показать имя пользователя USER вместо идентификатора USER, которые отправляют КОММЕНТАРИИ в виде POST ... Любой может мне помочь?Показать имя пользователя пользователя в представлении сообщения w/related comment

Вот модель ассоциации я сделал:

  1. ПОСТЫ 'имеет много' КОММЕНТАРИИ
  2. КОММЕНТАРИИ 'принадлежит' ПОЛЬЗОВАТЕЛЕЙ

post-> comment-> USER

Я уже прочитал «Контейнерное поведение CakePHP 1.3», но все же я не могу его хорошо понять ... Пожалуйста, помогите мне, какие коды поставить в представлении post_controller & view.ctp который может отображать связанную таблицу связанного в представлении POST.

И как вызвать данные USER в окне POST.

Я все еще смущен.

Спасибо заранее, Azure

+0

Помогите мне решить это пожалуйста! : { – Azure

ответ

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); 
} 

Содержание view.ctp файл в приложение/View/сообщений/папка

<!-- 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', 
     ) 
); 
} 
?> 
+0

Большое спасибо Кевину! Эти коды очень помогают мне. : D – Azure

0

Я предполагаю, что вы сохраняете идентификатор пользователя в комментариях таблицы и пользовательских именах в таблице пользователей, которые отправляют комментарий, а затем использовать решение ниже

В методе контроллера:

$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; 
+0

Спасибо, что нашли время, чтобы попытаться решить мою проблему Арша ... Я ценю это. : D – Azure

Смежные вопросы