插入数据内部连接Cakephp 3.0

时间:2015-05-10 04:48:28

标签: mysql cakephp cakephp-3.0

我是CakePHP的新手,我刚刚完成博客/文章教程,现在我正在尝试添加评论系统。

在我的comments表中,Idarticle_Idnameemailtextcreated。在我的articles表中,我有Iduser_idtitletextcreated

我正在尝试使用Insert Inner join Query根据文章ID添加注释。因此,假设用户在添加评论之前查看特定文章/view/1,文章ID已经过,因此他可以相应地评论他正在查看的特定文章ID。我怎样才能做到这一点?我希望我很清楚。

这是我评论的添加功能:

public function leavemessage()
{
    $comment = $this->Comments->newEntity();
    $articles = $this->loadModel('Articles');
    $leavemessage = $articles->find()
        ->hydrate(false)
        ->join([
            'table' => 'comments',
            'alias' => 'c',
            'type' => 'LEFT',
            'conditions' => 'c.article_id = articles.id',
        ])
        ->insert(['id'])
        ->where(['c.article_id = articles.id'])
        ->execute();

    if ($this->request->is('post')) {
        $comment = $this->Comments->patchEntity($comment, $this->request->data);
        if ($this->Comments->save($comment)) {
            $this->Flash->success('The comment has been saved.');
            return $this->redirect([
                'controller' => 'Articles',
                'action' => 'index',
                'c.article_id'
            ]);
        } else {
            $this->Flash->error('The comment could not be saved. Please, try again.');
        }
    }
    $articles = $this->Comments->Articles->find('list', ['limit' => 200]);
    $this->set(compact('comment', 'articles'));
    $this->set('_serialize', ['comment']);
}

我添加评论视图

<div class="comments form large-10 medium-9 columns">
    <?= $this->Form->create($comment); ?>
    <fieldset>
        <legend><?= __('Add Comment') ?></legend>
        <?php
        echo $this->Form->input('article_id', ['value' => $articleId]);
        echo $this->Form->input('name');
        echo $this->Form->input('email');
        echo $this->Form->input('text');
        ?>
    </fieldset>
    <?= $this->Form->button(__('Submit')) ?>
    <?= $this->Form->end() ?>
</div>

0 个答案:

没有答案