调用整数日期时间的成员函数格式()

问题描述:

我想通过POSTMAN通过REST API发布到数据库的条目。我正在使用symfony框架。调用整数日期时间的成员函数格式()

{ 
    "error": { 
     "code": 500, 
     "message": "Internal Server Error", 
     "exception": [ 
      { 
       "message": "Error: Call to a member function format() on integer", 
       "class": "Symfony\\Component\\Debug\\Exception\\FatalErrorException", 
       "trace": [ 
        { 
         "namespace": "", 
         "short_class": "", 
         "class": "", 
         "type": "", 
         "function": "", 
         "file": "C:\\xampp\\htdocs\\joel\\proj3\\vendor\\doctrine\\dbal\\lib\\Doctrine\\DBAL\\Types\\DateTimeType.php", 
         "line": 53, 
         "args": [] 
        } 
       ] 
      } 
     ] 
    } 
} 

这是代码:

<?php 

namespace AcsUserBundle\Controller; 

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; 
use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use FOS\RestBundle\Controller\Annotations as Rest; 
use FOS\RestBundle\Controller\FOSRestController; 
use Symfony\Component\HttpFoundation\Request; 
use Symfony\Component\HttpFoundation\Response; 
use FOS\RestBundle\View\View; 
use AcsUserBundle\Entity\User; 
use Symfony\Component\Form\Extension\Core\Type\DateTimeType; 

class UserController extends FOSRestController 
{ 


    /** 
* @Rest\Post("/user/") 
*/ 
public function postAction(Request $request) 
{ 
    $data = new User; 
    $personid = $request->get('personid'); 
    $privilagevalueid = $request->get('privilagevalueid'); 
    $username = $request->get('username'); 
    $password = $request->get('password'); 



    $createdate = strtotime($request->get('createdate')); 



if(empty($personid) || empty($privilagevalueid) || empty($username)|| empty($password)|| empty($createdate)) 
{ 
    return new View("NULL VALUES ARE NOT ALLOWED", Response::HTTP_NOT_ACCEPTABLE); 
} 



    $data->setPersonid($personid); 
    $data->setPrivilagevalueid($privilagevalueid); 
    $data->setUsername($username); 
    $data->setPassword($password); 
    $data->setCreatedate($createdate); 



    $em = $this->getDoctrine()->getManager(); 
    $em->persist($data); 
    $em->flush(); 
    return new View("User Added Successfully", Response::HTTP_OK); 
} 


} 

我猜你setCreatedate二传手等待DateTime对象。

你可以改变你的$createdate这样的变量;

$createdate = new \DateTime($request->get('createdate')); 
+0

男人.....你是这样的生活救星...数据库正在更新。 Thanxx这么多bruh .....:D – jcoder

我不建议你手动从数据请求中获取数据并创建实体。为此,您可以使用表格,你也将有验证的奖金:)

public function postTeamAction(Request $request) 
{ 
    $postData = json_decode($request->getContent(), true); 
    $newTeam = new Team(); 
    $form = $this->createForm(TeamType::class, $newTeam); 
    $form->submit($postData); 
    if ($form->isValid()) { 
     $this 
      ->getDoctrine()->getManager() 
      ->persist($newTeam) 
     ; 
     $this 
      ->->getDoctrine()->getManager() 
      ->flush() 
     ; 

    } 

你可以定义每个字段应该是什么样的形式。

+0

男子..即时通讯在编程的开始阶段..不知道如何执行此代码... :) ... heheh – jcoder

+0

阅读这篇文章有关形式:https:/ /symfony.com/doc/current/forms.html 您不需要在树枝中创建表单视图,只需创建将处理数据验证的表单类,并将根据接收的数据自动创建实体。 ;) –

+0

如果表单有效,则需要坚持已存满'$ newTeam'对象。 –

除非你的日期格式像Y-m-d,否则你会得到一个错误的解决方案。

$createdate = new \DateTime($request->get('createdate')); 

你应该知道你的日期格式,你可以使用下面的选项。

$createDate = $request->get('createdate'); 

$createDateObj = \DateTime::createFromFormat('d/m/Y', $createDate); 
$createDateObj = \DateTime::createFromFormat('d.m.Y', $createDate); 
$createDateObj = \DateTime::createFromFormat('m/d/Y', $createDate);