我是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);
}
}
的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!!
答案 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);
请注意,如果用户始终是当前登录的用户,则无需进行参考。只需传递用户对象。