刷新NULL对象的属性

时间:2014-08-14 20:06:23

标签: php ajax symfony null

我是stackoverflow和symfony开发的新手。

问题摘要:

我通过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);
        }
    }

FOR FRENCH PEOPLE

的Bonjour,

Je suis nouveau sur stackoverflowendébutantendéveloppementsymfony2。

Unpetitrésumédemon souci: Jerécupèredesvaleurs dans mon controllersuiteàunerequêteAjax。 Quand je fais un var_dump,il m'indique bien mes valeurs。 Par contre si jeveuxinsérerenDB,il ne trouve pas une valeur et me dit que c'est NULL(projectID)。 Ci-dessous le code controller:

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 vouspouviezm'éclairezoume donner une piste,je vousseraistrèsconcenaissant。

PS:je travaille en local: - (

Merciàtous!!

1 个答案:

答案 0 :(得分:0)

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

你还没有完全理解Doctrine 2是一个对象关系管理器。因此错误地使用了projectId和userId。

您应该有三个对象:捐赠,项目,用户以及正确的关系设置。然后,您将使用对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);

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