【问题标题】:Flush property of a NULL objectNULL 对象的刷新属性
【发布时间】:2014-10-08 14:48:20
【问题描述】:

我是 stackoverflow 和 symfony 开发的新手。

问题总结:

我使用 Request $request 从控制器中的 Ajax 获得价值。 当我对我的对象 ($donate) 进行 var_dump 时,它会返回所有数据。但是当我想刷新时,它说我的属性之一是NULL(projectID)?

有人可以帮助我吗?非常感谢,对我的英语感到抱歉。

class AjaxController extends Controller
    {
        public function addDonationAction(Request $request)
        {

            $projectID = (int)$request->request->get('projectID');


            $donate = new Donate();
            $donate->setAmount($request->request->get('donationAmount'));
            $donate->setProjectID($projectID);
            $donate->setUserID(1); // Faudra récupérer tout ça du user connecté !

            // var_dump($donate); die();

            $em = $this->getDoctrine()->getManager();
            $em->persist($donate);
            $em->flush();

            // Faire tous les contrôles
            // Envoie en DB si tout est ok
            // Mise à jour : projectT
            // Insert : donateT
            return new JsonResponse($donate);
        }
    }

对于法国人

你好,

Je suis nouveau sur stackoverflow et débutant en développement symfony2.

Un petit ressumé de mon souci : Je récupère des valeurs dans mon controller suite à une requête Ajax。 Quand je fais un var_dump, il m'indique bien mes valeurs。 Par contre si je veux insérer en DB, il ne trouve pas une valeur et me dit que c'est NULL (projectID)。 Ci-dessous le 代码控制器:

class AjaxController extends Controller
{
    public function addDonationAction(Request $request)
    {

        $projectID = (int)$request->request->get('projectID');


        $donate = new Donate();
        $donate->setAmount($request->request->get('donationAmount'));
        $donate->setProjectID(1);
        $donate->setUserID(1); // Faudra récupérer tout ça du user connecté !

        // var_dump($donate); die();

        $em = $this->getDoctrine()->getManager();
        $em->persist($donate);
        $em->flush();

        // Faire tous les contrôles
        // Envoie en DB si tout est ok
        // Mise à jour : projectT
        // Insert : donateT
        return new JsonResponse($donate);
    }
}

Si vous pouviez m'éclarez ou me donner une piste, je vous serais très reconnaissant。

PS : je travaille en local :-(

谢谢你!!

【问题讨论】:

  • 请用英语 / En anglais SVP.
  • 您可能有兴趣支持 51 区提案,Programmation (Stack Overflow in French)
  • 这个问题似乎是题外话,因为它不是用英文写的。对此限制表示歉意 - 最好有其他语言的 SO。

标签: php ajax symfony null


【解决方案1】:

首先要做的是仔细阅读 Symfony Doctrine 文档中的示例(并使用示例):http://symfony.com/doc/current/book/doctrine.html

您还没有完全理解 Doctrine 2 是一个对象关系管理器这一事实。因此,projectId 和 userId 的使用不正确。

您应该拥有三个对象:Donate、Project、User 以及正确的关系设置。然后,您将使用对 Project 和 User 的引用来构建您的 Donate 对象。

$projectID = (int)$request->request->get('projectID');  // Be sure to check that you have a id
$userID    = $this->getUser()->getId(); // Or wherever your user object comes from

$projectReference = $em->getReference('MyBundle:Project',$projectID);
$userReference = $em->getReference('MyBundle:User',$userID);

$donate->setProject($projectReference);
$donate->setUser($userReference);

请注意,如果用户始终是当前登录的用户,则无需进行引用。只需传递用户对象。

【讨论】:

    猜你喜欢
    • 2021-08-10
    • 2018-03-01
    • 2021-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-14
    相关资源
    最近更新 更多