Сущность не хочет сбрасывать - Symfony 3.4 / Mongodb / Php

Когда я пытаюсь очистить объект, который все работает хорошо, но ничего не заполняет мою базу данных, кроме 0 ошибок ... Вот мой контроллер:

/**
* @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, ответ будет выглядеть так:

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

Но если я ничего не посмотрю в своей базе данных, если там ... Если я наберу "show dbs" в моем терминале, я увижу свою базу данных до 0,0000 ГБ

Какую ошибку я сделал?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
87
1

Ответы 1

попробуйте добавить путь к файлу репозитория в заголовок документа следующим образом:

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

И добавьте эти строки в свой файл конфигурации:

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

тогда вам нужно вызвать диспетчер в файле контроллера:

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

Надеюсь, это сработает для вас :)

Вы можете объяснить, почему вы думаете, что это решает проблему?

Nico Haase 28.01.2019 12:34

Другие вопросы по теме