在CakePHP 3中为文章添加评论

时间:2016-08-08 15:06:29

标签: cakephp cakephp-3.0

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

我也尝试过在cakephp 3 docs上提到的所有例子

保存关联 - > 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
)

1 个答案:

答案 0 :(得分:0)

最后我得到了它的工作

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