实体不想刷新-Symfony 3.4 / Mongodb / Php [英] Entity don't want to flush - 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屋!