实体不想刷新-Symfony 3.4 / Mongodb / Php [英] Entity don't want to flush - Symfony 3.4 / Mongodb / Php

查看:56
本文介绍了实体不想刷新-Symfony 3.4 / Mongodb / Php的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我尝试刷新一个一切正常但无法填充我的数据库但出现0个错误的实体时……我的控制器是:

When I try to flush an entity that all work well but nothing fill my database but 0 errors... There is my controller:

/**
* @Security("is_anonymous() or is_authenticated()")
* @Route("api")
*/
class MessageUserController extends Controller
{
/**
 *
 * @Rest\Post(
 *     path = "/message/user/add",
 *     name = "api_message_add"
 * )
 */
public function UserAddMessageAction(Request $request)
{
    $em = $this->getDoctrine()->getManager();

    $content = ($request->get('content'));
    $user = $em->getRepository('AppBundle:User')->findOneBy(array('id' => ($request->get('id_user'))));
    $token = $request->get('token');
    $friend = $em->getRepository('AppBundle:User')->findOneBy(array('id' => ($request->get('id_friend'))));


    if (!isset($content)) {
        return new JsonResponse([
            'success' => "false",
            'message' => "Message non renseigné"
        ]);
    }

    if (!isset($token)) {
        return new JsonResponse([
            'success' => "false",
            'message' => "Token non renseigné"
        ]);
    }

    if ($user->getToken() != $token) {
        return new JsonResponse([
            'success' => "false",
            'message' => "Bad token",
        ]);
    }

    if (!isset($friend) or !isset($user)) {
        return new JsonResponse([
            'success' => "false",
            'message' => "Message sans propriétaire ou destinataire"
        ]);
    }

    $message = new MessageUser();
    $message->setRead('0');
    $message->setIdReceiver($friend->getId());
    $message->setIdTransmitter($user->getId());
    $message->setContent($content);

    $dm = $this->get('doctrine_mongodb')->getManager();
    $dm->persist($message);
    $dm->flush();

    return new JsonResponse([
        'messages' => $message,
        'success' => "true",
        'message' => "Message ajouté"
    ]);
}

/**
 *
 * @Rest\Post(
 *     path = "/message/user/list",
 *     name = "api_message_list"
 * )
 */
public function UserSeeMessageAction()
{
    $dm = $this->get('doctrine_mongodb')->getManager();
    $messages = $dm->getRepository('AppBundle:MessageUser')->find(1);


    return new JsonResponse([
        'messages' => $messages,
        'success' => "true",
        'message' => "Liste de messages"
    ]);
}
}

我的实体:

<?php

namespace AppBundle\Document;

use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;

/**
* @MongoDB\Document()
*/
class MessageUser
{
/**
 * @MongoDB\Id
 */
protected $id;

/**
 * @MongoDB\Field(type="string")
 */
protected $content;

/**
 * @MongoDB\Field(type="timestamp")
 */
protected $sendAt;

/**
 * @MongoDB\Field(type="boolean")
 */
protected $read = '0';

 /**
 * @MongoDB\Field(type="integer")
 */
protected $idTransmitter;

/**
 * @MongoDB\Field(type="integer")
 */
protected $idReceiver;

/**
 * Get id
 *
 * @return id $id
 */
public function getId()
{
    return $this->id;
}

/**
 * Set content
 *
 * @param string $content
 * @return $this
 */
public function setContent($content)
{
    $this->content = $content;
    return $this;
}

/**
 * Get content
 *
 * @return string $content
 */
public function getContent()
{
    return $this->content;
}

/**
 * Set sendAt
 *
 * @param timestamp $sendAt
 * @return $this
 */
public function setSendAt($sendAt)
{
    $this->sendAt = $sendAt;
    return $this;
}

/**
 * Get sendAt
 *
 * @return timestamp $sendAt
 */
public function getSendAt()
{
    return $this->sendAt;
}

/**
 * Set read
 *
 * @param boolean $read
 * @return $this
 */
public function setRead($read)
{
    $this->read = $read;
    return $this;
}

/**
 * Get read
 *
 * @return boolean $read
 */
public function getRead()
{
    return $this->read;
}

/**
 * Set idTransmitter
 *
 * @param integer $idTransmitter
 * @return $this
 */
public function setIdTransmitter($idTransmitter)
{
    $this->idTransmitter = $idTransmitter;
    return $this;
}

/**
 * Get idTransmitter
 *
 * @return integer $idTransmitter
 */
public function getIdTransmitter()
{
    return $this->idTransmitter;
}

/**
 * Set idReceiver
 *
 * @param integer $idReceiver
 * @return $this
 */
public function setIdReceiver($idReceiver)
{
    $this->idReceiver = $idReceiver;
    return $this;
}

/**
 * Get idReceiver
 *
 * @return integer $idReceiver
 */
public function getIdReceiver()
{
    return $this->idReceiver;
}
}

就像我这样做: http:// localhost :**** / api / message / user / add响应如下:

Like if I do: http://localhost:****/api/message/user/add the response looks like this:


{
messages:{},
success: true,
message: Messageajouté
}

{ "messages": {}, "success": "true", "message": "Message ajouté" }

但是如果我在那里查看数据库,则什么也没有...如果我在终端中键入 show dbs,可以看到我的数据库达到0.0000GB

But if I look my database nothing if in there ... If I type "show dbs" in my terminal I can see my database to 0.0000GB

我犯了什么错误?

推荐答案

尝试像这样在文档标题中添加存储库文件路径:

try to add repository file path in the document header like this:

/**
* @MongoDB\Document(repositoryClass="AppBundle\Repository\MessageUserRepository")
*/
class MessageUser
{}

并将这些行添加到配置文件中:

And add these lines to your config file:

doctrine_mongodb:
    connections:
        default:
            server: "%database_host%"
            options:
                username: "%database_user%"
                password: '%database_password%'
                db: "%database_name%"
                authSource: "%database_name%"


    default_database: '%database_name%'
    document_managers:
        default:
            auto_mapping: true

然后您需要在控制器文件中调用管理器:

then you need to call the manager in the controller file:

$dm = $this->get('doctrine_mongodb')->getManager();

我希望对您有用:)

这篇关于实体不想刷新-Symfony 3.4 / Mongodb / Php的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆