dongqiao3214 2018-08-10 09:53
浏览 65

实体不想刷新 - Symfony 3.4 / Mongodb / Php

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"
    ]);
}
}

My entity:

<?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;
}
}

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

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

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

What mistake did I?

  • 写回答

1条回答 默认 最新

  • dongyou6795 2019-01-28 11:33
    关注

    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();
    

    I hope that works for you :)

    评论

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘