在 CakePHP 3 中为文章添加评论

Posted

技术标签:

【中文标题】在 CakePHP 3 中为文章添加评论【英文标题】:Adding a comment to an article in CakePHP 3 【发布时间】:2016-08-08 15:06:29 【问题描述】:

我正在尝试向现有文章添加新评论,我尝试了几乎所有可能的方式来添加新评论,但没有找到任何可行的方法,请发布,如果有人知道如何完成此操作。

我还尝试了 cakephp 3 文档中提到的所有示例

保存关联 -> http://book.cakephp.org/3.0/en/orm/saving-data.html#saving-associations

$newData = [ 'title' => 'test', 'body' => 'test body', 'author_name' => 'test', 'author_url' => 'author_url', 'author_email' => 'author_email' ];
        $newData[ 'Posts' ] = [ '_ids' => [ 1 ] ];

        print_r( $newData );

        $tagEntity = $this->Posts->Comments->newEntity();
        $tag = $this->Posts->Comments->patchEntity( $tagEntity, $newData );

        print_r( $tagEntity );
        print_r( $tag );

        if( $this->Posts->Comments->save( $tag ) ) 

        

结果是

Array
(
    [title] => sdsds
    [body] => dsfsf
    [author_name] => ss
    [author_url] => author_url
    [author_email] => author_email
    [Posts] => Array
        (
            [_ids] => Array
                (
                    [0] => 1
                )

        )

)
Blog\Model\Entity\Comment Object
(
    [title] => sdsds
    [body] => dsfsf
    [author_name] => ss
    [author_url] => author_url
    [author_email] => author_email
    [Posts] => Array
        (
            [_ids] => Array
                (
                    [0] => 1
                )

        )

    [[new]] => 1
    [[accessible]] => Array
        (
            [*] => 1
        )

    [[dirty]] => Array
        (
            [title] => 1
            [body] => 1
            [author_name] => 1
            [author_url] => 1
            [author_email] => 1
            [Posts] => 1
        )

    [[original]] => Array
        (
        )

    [[virtual]] => Array
        (
        )

    [[errors]] => Array
        (
        )

    [[invalid]] => Array
        (
        )

    [[repository]] => Blog.Comments
)

【问题讨论】:

为什么你不尝试通过 CommentsController 添加评论并通过 $post_id 来添加功能? 【参考方案1】:

终于搞定了

$data = $this->request->data;
$data[ 'posts' ] = ['_ids' => [ $post->id ] ];
$comment = $this->Posts->Comments->patchEntity( $this->Posts->Comments->newEntity(), $data, [ 'Posts' ] );
$this->Posts->Comments->save( $comment );

if( $this->Posts->save( $comment ) ) 
    echo 'done';
 else 
    print_r( $comment );

【讨论】:

以上是关于在 CakePHP 3 中为文章添加评论的主要内容,如果未能解决你的问题,请参考以下文章

cakephp 3如何增加会话超时

cakephp:从下拉列表中为报告添加过滤器

如何在 CakePHP 2 中为 3 个树状连接表保存数据

CakePHP用分页处理评论

Cakephp 分页按计算字段排序( COUNT )

在AWS S3上存储CakePHP库以用于多个应用程序