0

我想做一个网站,附上新闻和评论。我制作了 Model Infos.php(连接到我页面上的新闻)和 Model Infos_coms.php(应该为每个新闻保存评论)。对于每个模型,我都有如下控制器

信息控制器.php

class InfosController extends AppController
{
public $helpers = array('Html','Form','Session');
public $components = array('Session');

public function index()
{

    $this->set('inform', $this->Info->find('all'));
    //$this->loadModel('Infos_com');
    //$this->set('com', $this->Infos_com->find('all'));
}}

,Info_comsController.php。

<?php
class Infos_comsController extends AppController
{
public $helpers = array('Html','Form','Session');
public $components = array('Session');

public function index()
{
    $this->set('com',  $this->Infos_com->find('all'));
}}

还有我的问题,因为我不知道如何显示两个表格(新闻及其评论在一页上)

这是我的索引,我有两次关于视图的食谱章节,但我没有找到解决我问题的答案。

这是我在文件夹中的索引文件(查看/信息)

<body>
<?php echo $this->Html->link(__('Dodaj newsa',true),array('action'=>'add')); ?>
<div class="container">
<?php
foreach ($inform as $news) : ?>

    <h3>
        <?php echo $news['Info']['title']; ?>
    </h3>
    <p>
        <?php echo $news['Info']['body']; ?>
    </p>
    <small>
        <?php echo $news['Info']['created']; ?>
    </small>
    <small>IP: 
        <?php echo $news['Info']['ip']; ?>
    </small>

<!-- existing comments -->

        <?php foreach ($com as $comment): ?>
        <h4>
            <?php echo $comment['Infos_com']['body']; ?>
        </h4>
        <small>
            <?php echo $comment['Infos_com']['created']; ?><br>
            <?php echo $comment['Infos_com']['ip']; ?>
        </small>

        <!-- adding comments -->
        <div class="form-group">
            <?php echo $this->Form->create('Infos_com'); ?>
            <?php echo $number = $comment['Info']['id']; ?>
            <?php echo $this->Form->input(__('mail',true),array('class'=>'form-control')) ?>
            <?php echo $this->Form->input(__('Comment body',true), array('class'=>'form-control')); ?>
            <?php echo $this->Form->submit(__('Dodaj komentarz',true),array('class'=>'btn btn-info')); ?>
            <?php echo $this->Form->end(); ?>
        </div>

<?php endforeach; ?>
 <?php endforeach; unset($news); unset($comment);?>

我将不胜感激任何提示

编辑。 我遵循 Guillemo Mansilla 的建议,但现在我遇到了数据库问题。我使用了 Guillemo Mansilla 代码,更改了名称,并添加了一些我认为正确的内容。有我的模态

信息.php

<?php

class Info extends AppModel
{
public $hasMany = array('Infos_com');
public $validate = array(
    'title'=>array(
        'rule'=>'notEmpty'
    ),
    'body'=>array(
        'rule'=>'notEmpty'
    )
);
}
?>

Infos_com.php

<?php

class Infos_com extends AppModel
{
public $belongsTo = array('Info');
public $validate = array(
    'mail'=>array(
        'requierd'=>array(
            'rule'=>'notEmpty',
            'message'=>'Write your email'
        )
    ),
    'body'=>array(
        'rule'=>'notEmpty',
        'message'=>'Write a comment'
    )
);
}
?>

我将身体部分内的 index.ctp 更改为

<?php if (isset($inform)) {
foreach($inform as $info) {
        echo $info['Info']['title'];
        foreach($info['Infos_com'] as $comment) {
            echo $comment['Infos_com']['body'];
        }
    }
} ?>

现在我收到错误

数据库错误错误:SQLSTATE [42S22]:找不到列:1054 '字段列表'中的未知列 'Infos_com.info_id'

SQL 查询:选择Infos_comid, Infos_com. id_infos, Infos_com. username, Infos_com. mail, Infos_com. ip, Infos_com. created, Infos_com. body, Infos_com. info_idblogdb。在infos_coms哪里。输入 (1, 2, 3, 4, 5)Infos_comInfos_cominfo_id

我有两张桌子,所以我不明白哪里出错了。

4

2 回答 2

0

我将假设您的关联是正确的,即 Info hasMany Infos_com,因此在您的信息模型中,您有类似

public $hasMany => array('Infos_com')

我将假设两个模型都已正确创建(您没有粘贴模型)

现在,在您的控制器 InfosController 中,执行此操作

$this->Info->recursive = 1;
$this->set('inform', $this->Info->find('all'));

在您看来,您将在名为 $inform 的 var 中拥有所有“信息”及其注释,只需递归地迭代它

if (isset($inform)) {
    foreach($inform as $info) {
        echo $info['Info']['title']; //I dont even know if you have a field named "title"
        foreach($info['Infos_com'] as $comment) {
            echo $comment['Infos_com']['comment'];
        }
    }
}

请记住,这段代码可能不起作用,因为我们使用不同的名称,只需将其调整为您在其中的内容

于 2013-11-13T14:59:59.167 回答
0

经过一夜,我终于成功了!!!

  1. 我将我的 Infos_com 中的列名从 id_infos 更改为 info_id

  2. 接下来我将我的索引代码编辑为

    <?php if (isset($inform)) {
    foreach($inform as $info) {
        echo $info['Info']['title']; echo '<br>';
        echo $info['Info']['body']; echo '<br>';
        foreach($info['Infos_com'] as $comment) {
            echo $comment['body']; echo '<br>';
            echo $comment['mail']; echo '<br>';
        }
    }
    } ?>
    

最后我在我的新闻下得到了我的评论,谢谢!

于 2013-11-14T09:24:47.600 回答