php - 实体不想刷新 - 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.0000GB
我犯了什么错误?
解决方案
尝试在文档标题中添加存储库文件路径,如下所示:
/**
* @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();
我希望这对你有用:)
推荐阅读
- drop-down-menu - Plotly Dash Heatmap 未通过下拉选择更新
- latex - LaTeX - 使用 3x3 数据 \ DTLforeach 创建矩阵的数据工具
- javascript - 如何在 JS 中用 p5 绘制一个不完美的圆
- python - 如何为外键添加+按钮,类似于django的admin
- android - Android:RNAppAuth.authorize 有 14 个参数,预期为 15
- javascript - d3js 从 json 文件中绘制矢量数据
- javascript - 尝试使用递归查找 LCM ......我得到无穷大
- python - 使用 Pandas 将数据附加到 Excel 工作表的最后一行
- python - 如何将文本文件读取为浮点列表?
- java - 即使我的 derby 数据库拥有一切,EclipseLink 仍在尝试更改表以添加 FOREIGN KEY 约束,该约束已经可用